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 break
y continue
funciona de manera predeterminada
también el debugging will be easier
$.each()
siempre es más lenta que un for
bucle, y esta es la única respuesta que la usa. La clave aquí es usar el .eq()
para acceder al elemento real dentro de la children
matriz y no la []
notación de corchete ( ).