jQuery .on () элемент, если родительский элемент не имеет класса - PullRequest
0 голосов
/ 26 января 2012

Заголовок говорит само за себя, но это не сработает. Функция наведения работает независимо от тела.

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

Я тоже пробовал наоборот, но не понял.1004 *

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

Ответы [ 3 ]

0 голосов
/ 26 января 2012

on использует возможность всплытия событий для работы.В вашем случае, когда вы определяете корневой селектор как #content, а соответствующий селектор как body:not(.zoomed) a.animation, корневой элемент уже прошел в пузырении события, поэтому он вызовет событие.Возможно, вам придется обращаться с этим программно, чтобы достичь этого.Попробуйте это

$("#content").on("hover", "a.animation", function(e) {
    if($("body:not(.zoomed)").length > 1){
       //Do stuff here
    }
}
0 голосов
/ 26 января 2012

ки.после выяснения, что я возился с неправильной функцией, я все еще не мог заставить это работать из-за события hover.

это ничего не получается (этот даже не проверяет класс тела):

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

, поэтому я использовал решение Ричарда Нила Илагана, которое использовало события mouseover и out.

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

спасибо за помощь!

0 голосов
/ 26 января 2012

Как насчет объявления слушателя по-другому:

$(document).on("hover", "#content body:not(.zoomed) a.animation", yourHoverFunction);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...