迭代包含特定后代节点的父元素

时间:2013-03-31 04:05:54

标签: jquery xpath jquery-selectors

我想仅通过包含特定元素作为后代节点的父元素进行迭代。

例如:

<div class="field">
   <input type="text" />
</div>
<div class="field">
   <input type="button" />
</div>
<div class="field">
   <input type="text" />
</div>

我知道使用xpath,可以使用div[@class = 'field' and input[@type = 'text']]

来完成

使用jQuery,我想使用与div.field[input[type = 'text']]类似的东西。

我知道的最近的选项是div.field > input[type = 'text'],但这样我会迭代输入而不是div。

提前致谢

2 个答案:

答案 0 :(得分:3)

您可以使用jQuery的:has()伪选择器:

$('.field:has(.text)')

由于它是一个非标准选择器,与常规选择器相比它会很慢,所以如果你要迭代大量元素,请记住这一点。

答案 1 :(得分:0)

您可以使用.parents()

$('input[type=text]').parents('.field').each(function(){
//do your stuff
})

示例 - http://jsfiddle.net/dYKRz/