簡體   English   中英

jQuery事件處理程序不在IE中觸發

[英]jQuery event handlers not firing in IE

我有一個頁面上的項目列表,其中包含一組MoveUp,MoveDown和Delete控件。

默認情況下,控件位於隱藏列表的頂部。 當您將鼠標懸停在項目行上時,我會使用jquery選擇控件

//doc ready function:
..
var tools = $('#tools');
$('#moveup').click(MoveUp);
$('#movedn').click(MoveDn);
$('#delete').click(Delete);
..
$('li.item').mouseover(function(){
    $(this).prepend(tools);
});

這在Firefox中運行良好..工具進入當前行,click事件調用ajax函數。 但是,在IE6和IE7中沒有發生任何點擊。 我嘗試在mouseout上取消綁定並重新綁定每個鼠標懸停..但無濟於事。

我還研究了javascript以外的各種原因(例如透明的png沖突,z-index,position:absolute)..也沒有找到解決方案。

我最終需要為每個項添加一個工具行,並在鼠標上/下顯示/隱藏。 同樣適用 - 唯一的挫折是我的頁面上有更多'工具'標記。

有沒有人知道為什么IE移動對象后忽略/丟棄/殺死鼠標事件(使用前置)? 為什么事后重新綁定事件也沒有效果? 在我放棄之前,讓我生氣了將近2個小時。

IE將丟失事件,具體取決於您如何向DOM添加內容。

var ele = $("#itemtocopy");

$("#someotheritem").append( ele ); // Will not work and will lose events

$("#someotheritem").append( ele.clone(true) );

我還建議在點擊事件上使用.live()來簡化你的代碼。 現在還不支持鼠標懸停/退出。 http://docs.jquery.com/Events/live

我只花了整整一天的時間來解決事件沒有觸發附加到DOM的項目(IE7,jQuery 1.4.1),這不是因為我需要使用live()(雖然,很高興知道,Chad),也不是因為我需要克隆這些物品。

這是因為我選擇了錨點標簽,其中包含“#”,如下所示:

var myitem = $('a[href=#top]');

我的解決方案是使用“屬性包含選擇器”,如下所示:

var myitem = $('a[href*=top]');

幸運的是,我對將來不會破壞的所有東西都有足夠的控制權。 這在技術上與附加對象無關,但希望它能節省一些時間。

我有類似的問題。 嘗試使用.ready在初始頁面加載時加載div。 在FF中運行良好,但不是ie7。

我發現了一個似乎可以解決這個問題的黑客攻擊。

我有加載調用回調,divLoaded()。

在divLoaded中,我檢查$('#targetdiv')。innerText.length <50或任何你認為它表明它沒有加載。 如果我檢測到這種情況,我只需調用函數taht再次加載div。

奇怪的是,我還加了一個'。' 在我回憶起ajax函數之前到innerText。 有時我們有時會在ajax加載最終需要之前經歷3或4次循環。

這讓我認為document.ready在IE7中的運行非常完美,這似乎消除了一些不可靠的神話。 真正“看起來”正在發生的是.load是一個有點不穩定的東西,當頁面剛剛加載時不能正常工作。

我仍然有點綠色w /所有jQuery的東西,所以拿這個w /一粒鹽。 有興趣聽到任何人接受我的小假設。

干杯

格雷格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM