我的DOM中有以下结构,我想只选择指定类中的第一级子节点。如何在JQuery中执行此操作?
请注意,我已经嵌套了具有相同css类的div。
我的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>
我需要得到什么: 当我找到所有带有't'类并且迭代的元素时,我想让那些属于'ch'类的孩子(不是内部div中带有't'类的那些)。
的Javascript
$(".t").each(function() {
//Get the elements in '.ch' for $(this) and process.
});
感谢您的帮助。
答案 0 :(得分:7)
您可以使用children
选择器
像
这样的东西$('.t').children('.ch')
这相当于
$('.t > .ch') // Child selector
您可以从代码中删除each
循环,因为选择器会选择您要查找的元素。
修改强>
对于第一级,您可以结合使用child selector
和parents
方法
$('.t > .ch').filter(function() {
return $(this).parents('.t').length === 1
})
<强> Check Fiddle 强>
答案 1 :(得分:1)
在这里玩猜谜游戏,但这正是你要找的吗?
$(".t").each(function(i) {
var childrenCHOnly = $(this).children('.ch');
/* Do work to childrenCHOnly */
});
或者这个:
$(".t").filter(function(i) { return $(this).find('.t').length; }).children('.ch').first();
它会过滤为只获取内部元素为.t
的{{1}}元素,然后获取第一个子.t
当然你也可以说:
.ch
|或|
$(".t").first().children(".ch").first().each(function(i) { ...
当然,这两个都只会抓住第一个$(".t > .ch").first().each(function(i) { ...
,无论它是否是更多的父母
答案 2 :(得分:1)
如果您想要顶级.t
,可以使用:
$('.t').not('.t > .t').children('.ch')
然后,一旦你得到了你需要的每一个.ch
,你就可以迭代它们。
如果你想遍历.t
,那么你可以让孩子进入循环:
$('.t').not('.t > .t').each(function(){
var ch = $(this).children('.ch')
})
小提琴:http://jsfiddle.net/c68xR/
如果您想选择第一个.t
的每个.ch
和每个.t
,那就是您想要的:
$('.t').each(function(){
var $this = $(this);
$this.css('border', 'red 1px solid');
if(!$this.is('.t > .t')){
$this.children('.ch').css('border', 'blue 1px solid');
}
})
答案 3 :(得分:0)
$(".t").children(".ch").each(function() {
// do stuff here
});
如果要定位.ch
元素内的元素,可以执行以下操作:
$(".t").children(".ch").children().each(function() {
// do stuff here
});
答案 4 :(得分:-1)
假设你真的想循环遍历每个.t
元素,并独立找到每个的孩子 - 其他答案似乎错过了 - 我想这就是你想要的:
$(".t").each(function() {
var childen = $(this).children('.ch');
});
对于原始问题中给出的示例HTML,我们将循环遍历each
2次 - 每个.t
元素一次。第一次通过时,只会选择第一个.ch
元素,第二次通过时,只会选择第二个.ch
元素。
children()
与find()
的不同之处在于它只能找到它所调用的元素的直接(第一级)子元素 - 在本例中为$(this)
,是当前通过循环的.t
。