Jquery filter()在使用$(this)时无法正常工作

Jquery filter()在使用$(this)时无法正常工作,jquery,html,filter,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");

有人能解释一下为什么会这样:

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

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

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

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

执行
$(此)
的console.log,您将得到答案:)