valor tiene seleccionar saber obtener elementos elemento con buscar atributo agregar jquery custom-attributes each

tiene - seleccionar elemento padre jquery



jQuery-Recorriendo elementos con atributos específicos (4)

Sé cómo recorrer las entradas a continuación, buscando las que tienen una clase específica de "probadores"

Y así es como hago eso:

<input type=''text'' name=''firstname'' class="testing" value=''John''> <input type=''text'' name=''lastname'' class="testing" value=''Smith''> <script type="text/javascript"> $(document).ready(function(){ $.each($(''.testing''), function() { console.log($(this).val()); }); }); </script>

Da salida a "John", "Smith" como se esperaba.

No quiero usar el class="testing" y usar un atributo personalizado: testdata="John" .

Así que esto es lo que estaría haciendo:

<input type=''text'' name=''firstname'' testdata=''John''> <input type=''text'' name=''lastname'' testdata=''Smith''>

Mi objetivo es rellenar automáticamente los valores de cada entrada con lo que sea que esté dentro de testdata , pero solo aquellos detectados tienen el atributo testdata .

Este fue mi intento fallido de usar el bucle $.each :

$.each($(''input'').attr(''testdata''), function() { var testdata = $(this).attr(''testdata''); $(this).val(testdata); });

Recibo esta respuesta: Uncaught TypeError: Cannot read property ''length'' of undefined ¿Alguien puede ver lo que estoy haciendo mal?


Aquí está utilizando el atributo de data-* HTML5 data-* :

HTML:

<input type=''text'' name=''firstname'' data-test=''John''> <input type=''text'' name=''lastname'' data-test=''Smith''>

JS:

$("input[data-test]").each(function(){ var testdata = $(this).data(''test''); $(this).val(testdata); });

Aquí está funcionando: http://jsfiddle.net/SFVYw/

Una forma aún más corta de hacerlo sería usando este JS:

$("input[data-test]").val(function(){ return $(this).data(''test''); });

Internamente, está haciendo lo mismo que el otro código JS, pero es un poco más conciso.


Para recorrer en iteración todos los elementos con el atributo testdata y asignar campos de formulario con lo que su atributo contiene intente

$("[testdata]").each(function(){ $(this).val($(this).attr(''testdata'')) })

[funciona con todos los elementos que supongo]


Si desea seleccionar entradas con un nombre de atributo específico y tiene estas entradas html:

<input type=''text'' name=''user1'' fieldname="user" class="testing" value=''John1''> <input type=''text'' name=''user2'' fieldname="user" class="testing" value=''Smith1''> <input type=''text'' name=''admin1'' fieldname="admin" class="testing" value=''John2''> <input type=''text'' name=''admin2'' fieldname="admin" class="testing" value=''Smith2''>

puede hacer un bucle en los administradores sólo de esta manera:

$("input[fieldname=''admin'']").each(function(){ alert($(this).val()); });

De la misma manera, puede hacer un bucle solo para usuarios:

$("input[fieldname=''user'']").each(function(){ alert($(this).val()); });


$("input[testdata]").each(function(){ alert($(this).attr(''testdata'')); // do your stuff });

demo de trabajo