$ .parent()。长度是否大于1?

时间:2014-02-04 13:12:24

标签: jquery

我遇到了一个疑问,我试图自己搞清楚,但我想我最好在这里做一些专家意见。

我知道$.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"

先谢谢。

2 个答案:

答案 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

看到这个例子: http://jsfiddle.net/Valtos/dm44Q/