Respuestas:
Use children()y each(), opcionalmente, puede pasar un selector achildren
$('#mydiv').children('input').each(function () {
alert(this.value); // "this" is the current element in the loop
});
También puede usar el selector secundario inmediato:
$('#mydiv > input').each(function () { /* ... */ });
each(). Verifique los documentos, vinculados en la respuesta anterior.
También es posible iterar a través de todos los elementos dentro de un contexto específico, sin importar cuán profundamente anidados estén:
$('input', $('#mydiv')).each(function () {
console.log($(this)); //log every element found to console output
});
El segundo parámetro $ ('# mydiv') que se pasa al selector jQuery 'input' es el contexto. En este caso, la cláusula each () iterará a través de todos los elementos de entrada dentro del contenedor #mydiv, incluso si no son hijos directos de #mydiv.
Si necesita recorrer elementos secundarios de forma recursiva :
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"));
NOTA: En este ejemplo, muestro los controladores de eventos registrados con un objeto.
También se puede hacer de esta manera:
$('input', '#div').each(function () {
console.log($(this)); //log every element found to console output
});
$('#myDiv').children().each( (index, element) => {
console.log(index); // children's index
console.log(element); // children's element
});
Esto itera a través de todos los elementos secundarios y se puede acceder a su elemento con valor de índice por separado utilizando elemento e índice respectivamente.
No creo que necesite usar each(), puede usar el bucle estándar
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");
}
de esta manera puede tener el estándar para funciones de bucle como breaky continuefunciona de manera predeterminada
también el debugging will be easier
$.each()siempre es más lenta que un forbucle, y esta es la única respuesta que la usa. La clave aquí es usar el .eq()para acceder al elemento real dentro de la childrenmatriz y no la []notación de corchete ( ).