Работает ли селектор jQuery .not с .delegate? - PullRequest
3 голосов
/ 18 ноября 2010

Я пытаюсь сделать Ajax-вызов для всех <a> элементов внутри идентификатора #filter, которые не имеют класса .noAjax, и почему-то я не могу заставить его работать. Может кто-нибудь взглянуть на мой синтаксис, пожалуйста?

$("#filter").not($("a.noAjax")).delegate("ul#portfolio-list li a", "click", function() {
    if ($.browser.msie) {
        location.hash = "#/" + this.pathname;
    } else {
        location.hash = this.pathname;
    }
    return false;
});

когда я пытаюсь просто использовать a или a.ajax (который я, конечно, добавил перед попыткой) в качестве селектора для .delegate, ничего не работает вообще. с jquery выше, ajax работает, но он пытается загрузить контент, даже когда я нажимаю на ссылку с a.noAjax

Ответы [ 3 ]

10 голосов
/ 18 ноября 2010

Вместо этого используйте селектор :not():

$("#filter").delegate("ul#portfolio-list li a:not(.noAjax)","click",function() {
    if ($.browser.msie) {
        location.hash = "#/" + this.pathname;
    } else {
        location.hash = this.pathname;
    }
    return false;
});

Или вместо этого вы можете делегировать элементу ul, поскольку он использует уникальный идентификатор, для повышения производительности селектора:

$("#portfolio-list").delegate("li a:not(.noAjax)", ...);
0 голосов
/ 18 ноября 2010

Попробуйте изменить первую часть следующим образом:

$("#filter a").not($(".noAjax")).del...

Другой способ выберет все элементы в #filter, которые не являются a.noAjax (включая не привязанные теги).

0 голосов
/ 18 ноября 2010

Это:

$("#filter").not($("a.noAjax")).

Должно быть на a элементах, например:

$("#filter a").not("a.noAjax")

Или, что вы действительно после:

$("#portfolio-list").delegate("li a:not(.noAjax)", "click", function() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...