我遇到了一个疑问,我试图自己搞清楚,但我想我最好在这里做一些专家意见。
我知道$.parent()
和$.parents()
之间的区别。
让我说如果我写:
$('p#selector').parents();
这将把这个“p”的父母,祖父母等等归还给我。如果我写:
$('p#selector').parents('.my-parent');
这也会占用这个“p”的所有父母,但只返回结果中包含“my-parent”类的那些。
公平够了,现在我的问题是,如果我写的
$('p#selector').parent() or
$('p#selector').parent('.my-parent')
在任何情况下它都只会返回一个元素。就是这样,
$('p#selector').parent().length or
$('p#selector').parent('.my-parent').length will be maximum of one right?
那么现在我认为我们仍然会过滤$.parent()
的结果,只是为了让它像一种验证,以确保我们的目标状况良好。
是否有人会想到过滤$.parent()
结果的其他用途,也有$.parent().length
大于1的情况。
一个例子是这样的:
If we combine two selectors and do .parent
$('p#sel1,p#sel2').parent();
This would give me the parent of both "p"
先谢谢。
答案 0 :(得分:0)
parent()
仅选择直接父元素。
传递选择器,如parent('.my-parent')
中将过滤only
直接父项,如果匹配选择器则返回父项,如果不匹配,则返回任何内容。
如果您需要找到与选择器匹配的最近父级,则使用.closest('.my-parent')
请注意,jQuery选择器可以包含多个元素,parent()
和closest()
不仅可以在集合中的第一个元素上运行,而且可以在所有元素上运行。
换句话说,这两个方法都会为它执行的集合中的每个元素返回最多一个元素,如果选择器与任何东西都不匹配,则没有元素。
答案 1 :(得分:0)
parent()不仅可以是0或1.它也可以更多。
如果您选择 li 并致电 parent(),您的网页中可以有多个 ul
使用这个html:
<div>
<ul>
<li><a href="#">Foo</a></li>
<li>Bar</li>
<li>Bar 2</li>
</ul>
<ul class="foorbar">
<li><a href="#">Foo</a></li>
<li>Bar</li>
<li>Bar 2</li>
</ul>
</div>
然后选择以下内容:
jQuery('li').parent().length
或
jQuery('li, ul').parent().length