0

有人可以解释为什么这样做:

$(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 对象。

4

3 回答 3

5

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

于 2013-10-25T12:24:01.787 回答
3

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

于 2013-10-25T12:24:06.127 回答
2

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

于 2013-10-25T12:24:57.463 回答