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

如何使用jQuery遍历div的子元素?,jquery,iteration,Jquery,Iteration,我有一个div,它有几个输入元素。。。我想遍历这些元素中的每一个。想法?使用和,您可以选择将选择器传递给孩子 您也可以只使用直接子选择器: $('#mydiv > input').each(function () { /* ... */ }); 也可以迭代特定上下文中的所有元素,而不需要说明它们嵌套的深度: $('input', $('#mydiv')).each(function () { console.log($(this)); //log every element fo

我有一个div,它有几个输入元素。。。我想遍历这些元素中的每一个。想法?

使用和,您可以选择将选择器传递给孩子

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

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

也可以迭代特定上下文中的所有元素,而不需要说明它们嵌套的深度:

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

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

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

注: 在这个例子中,我展示了一个对象注册的事件处理程序


也可以这样做:

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

儿童本身就是一个循环

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

我认为您不需要使用,您可以使用标准for循环

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");
}
通过这种方式,默认情况下可以使用“断开并继续”等循环标准功能

而且,调试也会更容易


这将遍历所有子元素,并且可以分别使用element和index分别访问其具有索引值的元素。

它使用.attr'value'作为元素属性

$("#element div").each(function() {
   $(this).attr('value')
});

然后在闭包中使用$this访问循环中的当前项。@amarsuperstar:正在添加该信息:-假设$this是父项的第n个子项,有没有办法知道n的值?@SouvikGhosh:索引作为每个子项的第一个参数传递给回调函数。检查上面答案中链接的文档。可能是因为嵌套,这个解决方案对我有效,而另一个解决方案不起作用。出于这个原因,我认为这通常是更好的解决方案。这就是我一直在寻找的。有没有办法从它们的值中生成json?我需要发布所有的主题为json。工程伟大!但是如果我需要所有的输入和选择项呢?我的经验是$。每个都比for循环慢,这是使用它的唯一答案。这里的关键是使用.eq访问子数组中的实际元素,而不是括号[]符号。
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");
}
$('#myDiv').children().each( (index, element) => {
    console.log(index);     // children's index
    console.log(element);   // children's element
 });
$("#element div").each(function() {
   $(this).attr('value')
});