2010-06-11 9 views

Respuesta

370

Uso children() y each(), se puede pasar opcionalmente un selector para children

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

También puede simplemente utilizar el selector secundario inmediato:

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

luego use $ (esto) dentro del cierre para acceder al elemento "actual" en el ciclo. – amarsuperstar

+1

@amarsuperstar: estaba simplemente en el proceso de agregar esa información :-) –

+0

¿Hay alguna manera de saber el valor de "n", suponiendo que $ (este) es el "n" ésimo hijo del padre? –

40

También es posible recorrer todos los elementos dentro de un contexto específico, no importa 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 jQuery 'entrada' Selector es el contexto. En este caso, la cláusula each() repetirá a través de todos los elementos de entrada dentro del contenedor #mydiv, incluso si no son hijos directos de #mydiv.

+1

Probablemente debido a la anidación, esta solución funcionó para mí, mientras que la otra no. Por esa razón, creo que esta es normalmente la mejor solución. – arame3333

2

Si necesita colocar a través de 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 eventos registrados manipuladores con un objeto.

2

Se puede hacer de esa manera también.
$('input', '#div').each(function() { console.log($(this)); //log every element found to console output });

Cuestiones relacionadas