jQuery .not选择器是否与.delegate一起使用?

时间:2010-11-18 15:14:41

标签: jquery jquery-selectors

我正在尝试对id <a>内的所有#filter元素进行Ajax调用,这些元素没有类.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;
});

当我尝试使用aa.ajax(我当然在尝试之前添加)作为.delegate的选择器时,根本无效。使用ajax上方的jquery工作,但即使我点击a.noAjax的链接

,它也会尝试加载内容

3 个答案:

答案 0 :(得分:10)

改为使用: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元素,因为它使用了唯一的ID,以提高选择器的性能:

$("#portfolio-list").delegate("li a:not(.noAjax)", ...);

答案 1 :(得分:0)

此:

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

应该在a元素上,如下所示:

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

或者,在之后 之后

$("#portfolio-list").delegate("li a:not(.noAjax)", "click", function() 

答案 2 :(得分:0)

尝试将第一部分更改为:

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

另一种方式是选择#filter中不是a.noAjax的所有元素(包括非锚标记)。