2010-04-27 9 views
5

Tengo un poco de html que tiene este aspectoJquery llegar divs niño de cada sub div y apoderarse de información en una matriz

<div id="main"> 
    <div id="sub_main_1" class="sub_main"> 
     <input type="text" class="sub_name_first" /><br /> 
     <input type="text" class="sub_name_second" /><br /> 
    </div> 
    <div id="sub_main_2" class="sub_main"> 
     <input type="text" class="sub_name_first" /><br /> 
     <input type="text" class="sub_name_second" /><br /> 
    </div> 
</div> 

me gustaría sacar cada sub_main divs información en una matriz de JavaScript. Hasta ahora tengo esto como mi código jQuery

$('#main').find('.sub_main').each( 
      function() { 
       alert('hi'); 
      }); 

La alerta es sólo una prueba que debería mostrar "Hola" dos veces. Pero esto no está funcionando. Tampoco tengo claro cómo puedo almacenar las dos entradas en una matriz de JavaScript. ¡Cualquier ayuda sería genial! Gracias,

+1

no funciona - por favor sea específico. qué te hace pensar que no está funcionando. ¿No estás viendo ninguna alerta? – mkoryak

+0

¿Desea almacenar los elementos de 'entrada', o sus valores? – user113716

+0

¿No funciona cómo? No hay alertas en absoluto? –

Respuesta

7
var array = $('#main input').map(function() { 
    return $(this).val(); 
}).get(); 

EDIT:

Tenga en cuenta que esto devolverá los valores de todos los elementos bajo input#main. Puede hacer que el selector $('#main input') sea tan específico como lo necesite si no se desean todos los elementos input.

0

¿Estás esperando que se cargue DOM?

$(document).ready(function(){ 
    $('#main').find('.sub_main').each( 
      function() { 
       alert('hi'); 
    }); 
}); 
+0

De hecho, estoy ejecutando esto en una función de JavaScript, el DOM ya se ha cargado y se llama a la función javascript desde la página una vez que se ha cargado en el DOM. – McNabbToSkins

+0

¿Qué pasa si tenemos que obtener un atributo específico de cada ".sub_main" ???? –

0

si desea sacar el niño divs de su div 'principal', utilice

$('.main>div') 

Esto seleccionará todos los div hijos de cualquier cosa con la clase de 'principal'.

3
var info = $("#main .sub_main input:text").map(function() { 
    return $(this).val(); 
}).get(); // get() converts resulting collection into array 

http://api.jquery.com/map/

0

¿por qué no hacer algo tan simple como esto:

var firsts = []; 
var seconds = []; 
("#main .sub_main input").each(function(){ 
    var $this = $(this); 
    if($this.is(".sub_name_first"){ 
    firsts.push($this.val()); 
    } else { 
    seconds.push($this.val()); 
    } 
}); 

seguro, no es la mejor manera, pero yo sólo escribió que en 1 minuto y funciona