jQuery筛选方法混淆

jQuery筛选方法混淆,jquery,jquery-selectors,Jquery,Jquery Selectors,我试图使用filter方法过滤jQuery对象,但没有得到预期的结果。这是我的密码: var $contents = $(".container"); var $spans = $contents.filter("span"); 根据我的理解,这应等同于以下内容: var $spans = $(".container span"); 但是,第一个示例没有将结果返回到$spans变量中,而第二个示例执行我所期望的操作 有人能解释为什么

我试图使用filter方法过滤jQuery对象,但没有得到预期的结果。这是我的密码:

var $contents = $(".container");
var $spans = $contents.filter("span");
根据我的理解,这应等同于以下内容:

var $spans = $(".container span");
但是,第一个示例没有将结果返回到$spans变量中,而第二个示例执行我所期望的操作

有人能解释为什么第一个示例不返回容器中所有span元素的集合吗


下面是一个例子来说明这个问题:

过滤器-用于过滤结果

var $spans = $contents.filter("span"); // <-- filters out the span that are inside $contents collection
其他的

var $spans = $(".container span.container"); // <-- gets descendant spans inside .container
等于

var $spans = $(".container").find('span');
等于

var $spans = $('span',".container");

过滤器-用于过滤出您的结果

var $spans = $contents.filter("span"); // <-- filters out the span that are inside $contents collection
其他的

var $spans = $(".container span.container"); // <-- gets descendant spans inside .container
等于

var $spans = $(".container").find('span');
等于

var $spans = $('span',".container");

这是因为您正在创建一个包含div标记的jQuery对象,因为集合中没有选定的span元素,长度为0


您需要的是
find
children
方法。

这是因为您正在创建一个包含div标记的jQuery对象,因为集合中没有选定的span元素,长度为0

您需要的是
find
children
方法。

这些方法是等效的:

$contents.filter("span")
$("span.container");
$contents.find("span");
$(".container span")
因为两者都会找到
span
s的元素,其类为
container

那么,这些是等价的:

$contents.filter("span")
$("span.container");
$contents.find("span");
$(".container span")
由于两者都会发现
span
s包含在一个类为
container
的元素中,它们是等效的:

$contents.filter("span")
$("span.container");
$contents.find("span");
$(".container span")
因为两者都会找到
span
s的元素,其类为
container

那么,这些是等价的:

$contents.filter("span")
$("span.container");
$contents.find("span");
$(".container span")
因为两者都会找到
span
s,它们包含在一个类为
容器的元素中

。filter()
会查看所选的元素。不是在它的后代。如果要选择
的后代,可以采用多种方法。下面介绍如何使用
find()
执行此操作。但这可能不是最有效的方法

var $contents = $(".container");
$contents.find("*").filter("span");
这些可能更有效

$(".container span")
$contents.find("span")
如果你想要孩子,那么你可以使用以下方法

$contents.children("span")
还有
$(元素的后代)
选择器。但我认为在对代码进行故障排除时,这一条很难理解,因此我很少使用它。

.filter()
查看所选的元素。不是在它的后代。如果要选择
的后代,可以采用多种方法。下面介绍如何使用
find()
执行此操作。但这可能不是最有效的方法

var $contents = $(".container");
$contents.find("*").filter("span");
这些可能更有效

$(".container span")
$contents.find("span")
如果你想要孩子,那么你可以使用以下方法

$contents.children("span")

还有
$(元素的后代)
选择器。但我认为在对代码进行故障排除时,这一条很难理解,因此我很少使用它。

.filter()
查看所选的元素。而不是它的孩子们。是否要选择
的子级?请查看修改后的。让我知道这是否是你要找的。是的,没错。只是看了一下文档,显然我需要使用children方法。谢谢你指出显而易见的——我需要它
.filter()
查看选定的元素。而不是它的孩子们。是否要选择
的子级?请查看修改后的。让我知道这是否是你要找的。是的,没错。只是看了一下文档,显然我需要使用children方法。谢谢你指出显而易见的——我需要它!说
find
选择子对象有点误导<代码>查找选择子代,子代与子代有区别<代码>子项选择子项。是。这是真的。我会更新我的帖子。感谢您的评论/更正!说
find
选择子对象有点误导<代码>查找选择子代,子代与子代有区别<代码>子项选择子项。是。这是真的。我会更新我的帖子。感谢您的评论/更正!