Jquery 了解.filter()的函数参数

Jquery 了解.filter()的函数参数,jquery,html,Jquery,Html,很抱歉问了这么一个基本的问题。有人能准确地解释一下这个函数作为.filter()中的参数是如何工作的吗 我试过几次使用它,但它并不总是返回我期望的结果。例如: <ul> <li><a href="#" class="">This is a link</a></li> <li><a href="#" class="">This is a link</a></li> &

很抱歉问了这么一个基本的问题。有人能准确地解释一下这个函数作为
.filter()
中的参数是如何工作的吗

我试过几次使用它,但它并不总是返回我期望的结果。例如:

<ul>
    <li><a href="#" class="">This is a link</a></li>
    <li><a href="#" class="">This is a link</a></li>
    <li><a href="#" class="">This is a link</a></li>
    <li><a href="#" class="">This is a link</a></li>
    <li><a href="#" class="" rel="bs">This is a link</a></li>
</ul>
仍然选择每个
a
-与
return$(“ul li a”)相同。等式(2)
-我不明白这一点

此函数是否具有返回内容的功能?有人能解释一下它的工作原理和局限性吗?谢谢。

帮助您理解
filter()
函数回调函数的相关语句如下:

这种方法的第二种形式允许我们根据函数而不是选择器过滤元素。对于每个元素,如果函数返回true(或“truthy”值),则该元素将包含在过滤集中;否则,它将被排除在外

基本上,当您提供的回调函数返回一个非“falsy”值时,该值将添加到结果jQuery对象中

您正在使用的测试是
$(this).eq(2)
-如果该命令的结果没有计算为false,它将被添加到结果jQuery对象中


让我们以这段代码为例:

if ( $("#non_existant_element") ){
  console.log("truthy value!");
}
您可以从选择器中看到元素实际上并不存在,但仍然可以看到
控制台.log
,因为空jQuery对象的计算结果不会为“false”。

.filter()
为每个元素调用传递的函数。如果函数返回一个“truthy”值,那么它将保留在集合中。如果它返回一个“falsy”值,那么它将被删除

$(this).eq(2);

这将返回一个jQuery对象。不管它是否包含任何内容都是另一回事,但是jQuery对象(即使是空的)是“真实的”。因此,这将返回每个元素。

基本上是
.filter()
和一个参数作为函数将迭代当前选择的所有元素,该函数中的返回将决定是保留该特定元素还是跳过它。在你的例子中,<代码>…EQ(2)总是返回某个对象,因此在这种情况下,它会认为是真的,并保留所有元素并相应地返回这些元素。< /P>什么是<代码> $(这个)?EQ(2)< /C>应该做什么?你的标准是什么?你想过滤哪些元素?@user2129623-非常欢迎:)快乐编码!
$(this).eq(2);