我有一個IE錯誤,我不知道如何解決。IE7&8不會觸發jQuery單擊事件添加到表格中的元素
使用jQuery我正在動態地移動一個菜單,使其出現在鼠標懸停的元素上。
我的代碼(簡化)看起來是這樣的:
$j = jQuery.noConflict();
$j(document).ready(function()
{
//do something on the menu clicks
$j('div.ico').click(function() { alert($j(this).parent().html()); });
setUpActions('#tableId', '#menuId');
});
//on mouseover set up the actions menu to appear on mouseover
function setUpActions(tableSelector, menuSelector)
{
$j(tableSelector + ' div.test').mouseover(function()
{
//note that append will move the underlying
//DOM element with all events from it's old
//parent to the end of this one.
$j(this).append($j(menuSelector).show());
});
}
此菜單似乎並沒有它在IE7,IE8和IE8-AS-IE7移動後正確註冊事件菜單(耶MS,這真的是IE8中的一個'新渲染引擎',我們都相信你)。
它在所有其他方面的預期工作。你可以看到a basic demo here的行爲。
在演示中可以看到問題的兩個例子:
- 按鈕應該改變懸停背後的圖像(用CSS實現:懸停選擇器)。它在第一次鼠標懸停時起作用,但之後仍然存在。
- 點擊事件不會觸發 - 但是使用開發工具,您可以手動調用它並且它仍然是訂閱的。
你可以看到(2)在IE8的開發工具:
- 打開page在IE8
- 開放開發工具
- 選擇 「腳本」 選項卡, 「控制檯」 子選項卡
- 類型:
$j('#testFloat div.ico:first').click()
手動調用任何訂閱事件 - 頁面上會有提醒
這意味着我是而不是失去了事件訂閱,他們仍然存在,IE只是在我點擊時不會打電話給他們。
有沒有人知道爲什麼會出現這個錯誤(除了因爲IE的引人注目的引擎)?
是否有解決方法?
難道這就是我做錯了,只是碰巧按照預期在其他一切工作?
謝謝,好主意,但我已經試過了,它沒有區別。我還沒有失去點擊事件 - 在JavaScript命令行中的$ j('selector')。click()將觸發我期望的事件。 jQuery事件訂閱在移動中倖存下來,只是IE似乎沒有稱之爲。 CSS:懸停具有相同的症狀。 – Keith 2009-04-22 11:14:32
你有我可以看的演示頁嗎? – Richard 2009-04-22 11:42:15
是的 - 鏈接的問題。 – Keith 2009-04-22 12:32:25