如何使用jQuery遍历div的子元素?


257

我有一个div,其中有几个输入元素...我想遍历每个元素。有想法吗?

Answers:


476

使用children()each(),您可以选择将选择器传递给children

$('#mydiv').children('input').each(function () {
    alert(this.value); // "this" is the current element in the loop
});

您也可以只使用直接子选择器:

$('#mydiv > input').each(function () { /* ... */ });

68
然后在闭包中使用$(this)访问循环中的“当前”项。
amarsuperstar 2010年

1
@amarsuperstar:正在添加该信息的过程中:-)
Andy E 2010年

假设$(this)是父级的第n个子级,有没有办法知道“ n”的值?
Souvik Ghosh

1
@SouvikGhosh:索引作为第一个参数传递给的回调函数each()。检查上面答案中链接的文档。
安迪E

55

还可以遍历特定上下文中的所有元素,而不管它们嵌套的深度如何:

$('input', $('#mydiv')).each(function () {
    console.log($(this)); //log every element found to console output
});

传递给jQuery'input'选择器的第二个参数$('#mydiv')是上下文。在这种情况下,each()子句将遍历#mydiv容器中的所有输入元素,即使它们不是#mydiv的直接子代也是如此。


1
可能是因为嵌套,所以这种解决方案对我有用,而另一种则没有。因此,我认为这通常是更好的解决方案。
arame3333

这就是我想要的。有什么办法从它们的值制作json吗?我需要将所有主题发布为json。
穆罕默德·萨奇布

8

如果您需要递归遍历子元素:

function recursiveEach($element){
    $element.children().each(function () {
        var $currentElement = $(this);
        // Show element
        console.info($currentElement);
        // Show events handlers of current element
        console.info($currentElement.data('events'));
        // Loop her children
        recursiveEach($currentElement);
    });
}

// Parent div
recursiveEach($("#div"));   

注意: 在此示例中,我显示了向对象注册的事件处理程序。



3
$('#myDiv').children().each( (index, element) => {
    console.log(index);     // children's index
    console.log(element);   // children's element
 });

这将遍历所有子项,并且可以分别使用elementindex分别访问具有索引值的元素


1

children()本身就是一个循环。

$('.element').children().animate({
'opacity':'0'
});

1

我不认为您需要使用 each(),您可以使用标准的循环

var children = $element.children().not(".pb-sortable-placeholder");
for (var i = 0; i < children.length; i++) {
    var currentChild = children.eq(i);
    // whatever logic you want
    var oldPosition = currentChild.data("position");
}

这样,您就可以拥有标准的循环功能,例如breakcontinue默认情况下可以正常工作

还有, debugging will be easier


我的经验是,这$.each()总是比for循环慢,这是使用循环的唯一答案。此处的关键是使用.eq()来访问children数组中的实际元素,而不是括号([])表示法。
elPastor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.