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
});