jquery选择器查找子元素,

0yg35tkg  于 2022-12-22  发布在  jQuery
关注(0)|答案(4)|浏览(250)

我已经在google上搜索了一个小时,并尝试了一个错误,试图想出一个jquery选择器来访问一个可扩展树中的几个标签元素之一。

<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')

任何帮助都将不胜感激。
里克

5sxhfpxr

5sxhfpxr1#

$(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');
7d7tgy0s

7d7tgy0s2#

不如这样:

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

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

dl5txlt9

dl5txlt93#

替代其他职位(许多方法来剥皮猫:))

$(this).siblings(".treeCheckBoxLabel:has(label.nodeCheckIcon):first")
ehxuflar

ehxuflar4#

由于this指向span元素,而span元素是label的父元素的兄弟元素,因此$(this).find('.nodeCheckIcon:first')将无法工作。我不知道您的完整标记结构,但如果您有一个用于此span元素的 Package 容器,则可以尝试以下操作

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

相关问题