filter()不能像我期望的那样使用$(this)

时间:2013-10-25 12:22:41

标签: jquery html filter

有人可以解释为什么会有效:

$(function(){
    $("ol li a").click(function(){
        $("ol li a").filter(":even").css("color", "orange");
    });
});

但这不是:

$(function(){
    $("ol li a").click(function(){
        $(this).filter(":even").css("color", "orange");
    });
});

我认为在这个上下文中使用$(this)将引用具有原始选择器的jquery对象。

3 个答案:

答案 0 :(得分:5)

因为$(this)是单个元素(事件的目标),而$("ol li a")包含与该扇区匹配的0到N个元素。

答案 1 :(得分:3)

this不是与原始选择器对应的元素的集合,它是接收事件的特定元素。如果您的选择器返回单个元素而不是$(this)$(selector)可以互换,但不是在您的情况下。

答案 2 :(得分:2)

当您单击该按钮时,该事件将触发并创建$(this),但是,$(this)仅是单击的元素,而不是整个元素集,因此它不会是能够过滤,因为它只是一个元素。