2010-01-24 11 views
6

Nunca he pasado por los elementos con jquery y sería genial con algo de ayuda.loop through elements with jquery?

mi DOM parece:

<div class="section"> 

    <div class="group"> 
     <div class="comment"> 
      <input class="comment" type="text" /> 
      <br /> 
     </div> 
     <div class="link"> 
      <input class="link" type="text" /> 
      <input class="link" type="text" /> 
      <br /> 
     </div> 
    </div> 

    <div class="group"> 
     <div class="comment"> 
      <input class="comment" type="text" /> 
      <input class="comment" type="text" /> 
      <br /> 
     </div> 
     <div class="link"> 
      <input class="link" type="text" /> 
      <br /> 
     </div> 
    </div> 

</div> 

¿Cómo se escribe el código para obtener todos los valores en los campos de entrada de texto (class = comentario y class = enlace). habrá muchos grupos con diferentes números de campos de entrada de texto.

gracias!

Respuesta

24
$(":input.comment, :input.link").each(function() { 
    alert($(this).val()); // or this.val 
}); 

Ver:

+1

val es una función, por lo que necesita parens.() –

+0

Gracias Kyle, fue una omisión relacionada con la velocidad. Simplemente lo arreglé, – karim79

+1

': input' coincide con cualquier tipo de elemento de entrada, incluyendo select, así que pensé que sería útil incluirlo. Por supuesto, las entradas de texto se pueden seleccionar como 'entrada [tipo = texto]', pero gracias por el comentario – karim79

5

Esto selecciona todos los elementos con una clase de comentario o enlace, y alerta a su valor.

$(".comment, .link").each(function() { 
    alert($(this).val()); 
}); 

Como alternativa, puede seleccionar el tipo de entrada:

$("input[type='text']").each(function() { 
    alert($(this).val()); 
}); 
+0

No es difícil de detectar, pero necesita perder el espacio entre 'input' y el filtro de atributo' [type = text] ',' input [type = text] '. – karim79

+1

Reparado. Buen ojo. –

0

intento:

$(":input.comment, :input.link", "div.group").each(function() { 
    alert($(this).val()); 
}); 
0

La siguiente sintaxis es más claro para mí (aunque es funcionalmente equivalente a las otras respuestas) :

var elementList = $(":input.comment, :input.link"); 
$.each(elementList, function(i, input){ 
    alert($(input).val()); 
}); 
1

Respondiendo a la pregunta

Primera línea para la carga: Necesitamos recorrer cada bucle. Segunda línea para el bucle de los campos de texto, suponga que necesita un tipo de entrada diferente - simplemente reemplace con esa Tercera línea - Asegurándose de que no está en blanco Cuarta línea - será su lógica de negocios (En este caso, estoy tratando de analizar el . campo de texto de entrada)

Ver este violín: http://jsfiddle.net/5FVtR/86/

$(document).ready(function() { 
    $(":text").each(function() { 
     if($(this).val() !='') { 
      $(this).val()=parseFloat($(this).val()).toFixed(2) 
      return false; 
     } 
    });