如何在JQuery中只选择第一级子代

M99*_*M99 -3 javascript jquery

我的DOM中有以下结构,我只想从指定的类中选择第一级子级.如何在JQuery中执行此操作?

请注意我有嵌套的div具有相同的css类.

我的HTML:

<div class="t">
    <div>title</div>
    <div class="ch">
        <input type="text name="input1" value="" id="i1">
    </div>
    <div class="t">
        <div>sub title</div>
        <div class="ch">
            <input type="text name="input2" value="" id="i2">
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我需要得到的: 当我找到所有带有't'类的元素并迭代时,我想让那些属于'ch'类的孩子(不是内部div中带有't'类的那些).

使用Javascript

$(".t").each(function() {
    //Get the elements in '.ch' for $(this) and process.
});
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Sus*_* -- 7

你可以使用children选择器

就像是

$('.t').children('.ch')
Run Code Online (Sandbox Code Playgroud)

这相当于

$('.t > .ch') // Child selector
Run Code Online (Sandbox Code Playgroud)

并且您可以each从代码中删除循环,因为选择器会选择您要查找的元素.

编辑

对于第一级,您可以使用child selectorparents方法的组合

$('.t > .ch').filter(function() {
   return $(this).parents('.t').length === 1 
})
Run Code Online (Sandbox Code Playgroud)

检查小提琴

  • 这实际上并不是每个OP指定的方式 (2认同)
  • @ Sushanth--我确认子选择器更快:http://jsperf.com/child-selector-vs-children23 (2认同)
  • 我只想要一级孩子.不是所有的孩子.例如:如果你使用"t"类的第一个div,我只想要第一个"ch"的元素. (2认同)