jQuery .on()一个元素,如果父元素没有类

时间:2012-01-26 10:16:31

标签: jquery jquery-selectors

标题说明了一切,但这不起作用, 无论身体如何,悬停功能都有效。

$("#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
}

3 个答案:

答案 0 :(得分:0)

如何以不同方式声明侦听器:

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

答案 1 :(得分:0)

on利用事件冒泡工作。在您将根选择器指定为#content且匹配选择器指定为body:not(.zoomed) a.animation的情况下,根元素已经在事件冒泡中传递,因此它将触发事件。您可能必须以编程方式处理它才能实现此目的。试试这个

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

答案 2 :(得分:0)

确定。在发现我正在弄错函数之后,由于悬停事件,我仍然无法使其工作。

这没有结果(这个甚至不检查身体类别):

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

所以我使用了Richard Neil Ilagan解决鼠标悬停和解决方案的问题。出事件。

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

感谢所有的帮助!