我应该为jQuery.find()提供什么参数来选择子元素而不是其他元素?我无法通过'>'来领导选择器。并且有' *'将选择所有后代,而不仅仅是直接的孩子。
我知道jQuery.children(),但这是一个库,所以用户能够提供自己的选择器,我想确保他们有一些方法只选择直接的孩子(不添加批次)我自己的逻辑。)
修改
我想使用jQuery.find()
只查找父元素的第一级子元素中的元素,而不是子元素的子元素。
示例:
<parent>
<child-1>
<child-2></child-2>
</child-1>
<child-1>
</child-1>
</parent>
我想只搜索元素child-1
而不是他们的孩子(即孩子2)
*编辑:**
有关更多说明,它是一个表格元素上的Angular指令。该指令需要能够找到表行,但是要用于各种各样的模板,因此它可以有行的选择器。有时,除了原始元素的子div之外,行没有明显的特征;其他时候,这些行是孙子孙女,甚至是曾孙子。
答案 0 :(得分:3)
如您在问题中提到的那样,使用>
启动您的选择器。试试吧:
var s = ".classA",
n = $('#wrapper').find('>'+s).length;
alert('Found '+ n +' direct children of #wrapper with the "'+ s +'" selector.'); // 3
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="wrapper">
<div class="classA"></div> <!-- Selected -->
<div class="classA"> <!-- Selected -->
<div class="classA"></div> <!-- Ignored -->
</div>
<div class="classC">
<div class="classA"></div> <!-- Ignored -->
</div>
<div class="classB">
<div class="classB"></div>
</div>
<div class="classA"></div> <!-- Selected -->
</div>
或者使用$.children()
,正如您在问题中提到的那样:
var s = ".classA",
n = $('#wrapper').children(s).length;
alert('Found '+ n +' direct children of #wrapper with the "'+ s +'" selector.'); // 3
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="wrapper">
<div class="classA"></div> <!-- Selected -->
<div class="classA"> <!-- Selected -->
<div class="classA"></div> <!-- Ignored -->
</div>
<div class="classC">
<div class="classA"></div> <!-- Ignored -->
</div>
<div class="classB">
<div class="classB"></div>
</div>
<div class="classA"></div> <!-- Selected -->
</div>
答案 1 :(得分:1)
我知道jQuery.children(),但这适用于库,因此用户可以提供自己的选择器
但是JQuery的.children()
接收选择器作为参数:
.children([选择器])
描述:获取匹配元素集中每个元素的子元素,可选择通过选择器进行过滤。
答案 2 :(得分:0)
将直接子元素与>
一起使用这是您需要的代码:
elemnt.find("> selector");
这应该可以解决问题。