Как исключить (.not) селектор с Jquery (с живой функцией) - PullRequest
1 голос
/ 18 марта 2011

У меня есть прямое событие на всех ссылках или множественный селектор на странице, и у меня есть множественный селектор, я не хочу активировать событие. Обычно, когда первая живая функция выполняется по всей ссылке, e.preventDefault () активируется. Но если один из селекторов есть в моем списке исключений, я хочу выполнить ссылку нормально. Я пробовал этот код:

$(selectorListA).live('click',function(e) {
    // stop all event
});

$(selectorListB).live('click',function(e) {
    e.preventDefault();
    // do action
});

Я пытался это сделать:

$(selectorListA).not(selectorListB).live('click',function(e) {
    e.preventDefault();
    // do action
});

Все эти решения не работают, единственный способ, которым у меня есть этот код, он работает, но в Chrome перед выполнением события click отображается ошибка, хм, я не уверен, что это хорошо:

$(selectorListB).live('click',function(e) {
    die();
});

$(selectorListA).live('click',function(e) {
    e.preventDefault();
    // do action
});

Я не знаю, что я могу взять для выполнения всех selectorListA с исключением всех selectorListB. Можете ли вы помочь мне, пожалуйста, спасибо!

1 Ответ

1 голос
/ 18 марта 2011

Какую ошибку вы получаете в Chrome?Кажется, проблема не в ваших селекторах.

В любом случае, что-то вроде этого должно работать:

$(selectorListA).live('click',function(e) {
    if ($(this).is(selectorListB)) }{
        // stuff for b group only
    }

    // stuff for both groups
});

Версия, использующая .not(), не будет работать, потому что live присоединяетобработчик уровня документа и использует оригинальный селектор, чтобы проверить, должно ли событие применяться.Таким образом, выбор и фильтрация перед вызовом в реальном времени не будут работать так, как с click().

...