2012-01-26 46 views
0

標題說明了這一切,但這不起作用, 懸停函數可以工作,不管是否正文。jQuery .on()元素,如果父元素沒有類

$("#content").on("click", "a.zoom", function(e) { 
    $("body").addClass("zoomed"); 
} 
$("#content").on("hover", "body:not(.zoomed) a.animation", function(e) { 
    //stuff 
} 

我也嘗試了其他方式,但我不明白這一點。

$("body:not(.zoomed) #content").on("hover", "a.animation", function(e) { 
    //stuff 
} 
+0

這是在這裏工作:http://jsfiddle.net/richardneililagan/Ng6hW/2/ –

回答

0

好的。在發現我擺弄了錯誤的功能後,由於懸停事件,我仍然無法讓這個工作。

這原來沒有(這個心不是連檢查身體類):

$("#content").on("hover", "a.backgroundSwitch", function(e) { 
    console.log("hello?"); 
}, function() { 
    console.log("bello!"); 
}); 

所以我用理查德·尼爾Ilagan的unsing鼠標懸停&了事件的解決方案。

$("#content").on("mouseover", "body:not(.zoomed) a.backgroundSwitch", function() { 
    console.log("hello"); 
}).on("mouseout", "body:not(.zoomed) a.backgroundSwitch", function() { 
    console.log("bello"); 
}); 

感謝您的幫助!

0

如何聲明不同的聽衆:

$(document).on("hover", "#content body:not(.zoomed) a.animation", yourHoverFunction); 
+0

你這樣做'活'的方式,這''on'(和'代表')應該糾正。雖然如果你仔細想想,我們可能**實際上不得不訴諸於此。這是可悲的。 –

+0

對不起。我愚蠢的黑客入侵了錯誤的功能。謝謝!! – honk31

0

on利用事件冒泡工作的。在你的情況下,當你指定根選擇器爲#content,並且匹配選擇器爲body:not(.zoomed) a.animation時,根元素已經在事件冒泡中傳遞,因此它將觸發事件。您可能必須通過編程來實現此目的。試試這個

$("#content").on("hover", "a.animation", function(e) { 
    if($("body:not(.zoomed)").length > 1){ 
     //Do stuff here 
    } 
} 
+0

有趣的是,如果我把身體的長度:不是(.zoomed)放入控制檯,我什麼也得不到。永遠不能。 – honk31

相關問題