JQuery не работают селекторы - PullRequest
2 голосов
/ 04 января 2012

У меня проблема с селекторами jQuery:

$("ul.questions li").not(".title, .content").click().live('click', function(){
        $(".inspector").slideToggle();
        if($(this).hasClass("selected")) {
               $(this).removeClass("selected");
        } else {
               $(this).addClass("selected");
        }
});

В этом коде это работает, если я удаляю .not(".title, .content"). но если я добавлю его, он просто не получит щелчок. Я использую live, потому что обычно элементы добавляются через .append(), за исключением некоторых. Это пример: http://jsfiddle.net/88w8N/. По сути, я хочу обработать щелчок по элементу li, но не если он щелкает по элементам .title и .content. Что я делаю не так? Спасибо!

Ответы [ 3 ]

3 голосов
/ 04 января 2012

Вам необходимо остановить jQuery от запуска события, прикрепленного к родителю, когда запускается дочерний элемент .

Вам необходимо использовать функцию jQuery event.stopPropagation(),which

Предотвращает всплытие события в дереве DOM, предотвращая уведомление любых родительских обработчиков о событии.

В вашем коде, в частности: http://jsfiddle.net/88w8N/21/

$("ul.questionssel li div, ul.questionsnosel li div").on('click', function(e) {
    e.stopPropagation();
});

ОБНОВЛЕНИЕ

Чтобы исправить вашу «живую» проблему, попробуйте следующую модификацию: http://jsfiddle.net/88w8N/25/

$("ul.questionssel").on('click', 'li', function() {

    //$(".inspector").slideToggle();
    if($(this).hasClass("selected")) {
        $(this).removeClass("selected");
    } else {
        $(this).addClass("selected");
    }
});

$("ul.questionsnosel").on('click', 'li', function() {
    //$(".inspector").slideToggle();
    if($(this).hasClass("selected")) {
        $(this).removeClass("selected");
    } else {
        $(this).addClass("selected");
    }
});

$("ul.questionssel li div, ul.questionsnosel li div").on('click', function(e) {
    e.stopPropagation();
});
0 голосов
/ 04 января 2012

Вы можете использовать не селектор вместо не функции http://api.jquery.com/not-selector/

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

вы можете попробовать: не ("...") вместо .not ("...")

, пожалуйста, проверьте эти ссылки дважды:

http://api.jquery.com/attribute-not-equal-selector/

http://api.jquery.com/not-selector/

http://api.jquery.com/category/selectors/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...