用于查找子元素的jquery选择器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于查找子元素的jquery选择器相关的知识,希望对你有一定的参考价值。

一直在谷歌搜索和试错一小时试图找到一个jquery选择器来访问可扩展树中的几个标签元素之一。 html是这样的:

<span id="ppown" class="treeTitleSpan" role="leaf">PPO</span> 
<span class="treeCheckBoxLabel"> 
    <label class='nodeCheckIcon'  />

或者像这样:

<span id="ppw" class="treeTitleSpan" role="leaf">Other</span> 
<span class="handle closed"></span>
<span class="treeCheckBoxLabel"> 
    <label class='nodeCheckIcon'  />

我从每种情况下的.treeTitleSpan范围开始(在点击处理程序中)。我知道我可以访问一个:

$(this).next().next().children('.nodeCheckIcon');

另一个用:

$(this).next().children('.nodeCheckIcon');

但我想要一个适用于这两种情况的选择器,'find'似乎不起作用:

$(this).find('.nodeCheckIcon:first')

任何帮助,将不胜感激。

干草堆

答案
$(this).nextAll('.treeCheckBoxLabel').children('.nodeCheckIcon');

或者,如果您可能有多个标签,例如:

<span id="ppw" class="treeTitleSpan" role="leaf">Other</span> 
<span class="handle closed"></span>
<span class="treeCheckBoxLabel"> 
    <label class='nodeCheckIcon'  />
</span>
<span class="treeCheckBoxLabel"> 
    <label class='nodeCheckIcon'  />
</span>

而你只想要第一个:

$(this).nextAll('.treeCheckBoxLabel').first().children('.nodeCheckIcon');
另一答案

这样的事情怎么样:

$(this).nextAll('.treeCheckBoxLabel:first').children('.nodeCheckIcon');

使用:first确保您最多只选择一个.treeCheckBoxLabel,这可能是也可能不是问题,具体取决于HTML的其余部分。

另一答案

替代其他帖子(许多方式给猫皮肤:) :)

$(this).siblings(".treeCheckBoxLabel:has(label.nodeCheckIcon):first")
另一答案

由于this指向span元素,这是label的父母的兄弟姐妹,$(this).find('.nodeCheckIcon:first')不会起作用。我不知道你的完整标记结构,但如果你有这个span元素的包装容器,那么你可以试试这个

$(this).parent().find('.nodeCheckIcon:first');

以上是关于用于查找子元素的jquery选择器的主要内容,如果未能解决你的问题,请参考以下文章

jquery选择器查找子元素

JQuery中查找父元素,子元素,追加元素,插入元素和删除元素

jQuery 选择器,用于查找与选择器匹配的给定元素之后的第一个元素

jquery查找元素

jQuery之层次选择器

[ jquery 过滤器 children() ] 此方法用于在选择器的基础之上返回被选元素的所有直接子元素