¿Cuál es la diferencia entre esto?
$.each($('#myTable input[name="deleteItem[]"]:checked').do_something());
y esto:
$('#myTable input[name="deleteItem[]"]:checked').each(function() { do_something });
El html de la celda de la tabla que se está seleccionando y sobre la que se actúa se ve así:
<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="' . $rowItem['itemID'] . '" /></td>
Revisé la documentación de jQuery, pero todavía no entiendo la diferencia. (¿Soy yo o esa documentación a veces es un poco "nebulosa" en la claridad del contenido?)
Información agregada:
¡Aparentemente mi intento de ejemplos genéricos está confundiendo a la gente! Junto con el paréntesis (anteriormente) que faltaba en el primer ejemplo. :(
El primer ejemplo proviene de una línea en mi código que elimina el <tbody> de cualquier fila con una casilla de verificación marcada:
$.each($('#classesTable input[name="deleteClasses[]"]:checked').parent().parent().parent().remove());
El segundo ejemplo proviene de una situación en la que busco en la #classesTable las casillas de verificación marcadas y elimino su elemento correspondiente en un menú desplegable.
$('#classesTable input[name="deleteClasses[]"]:checked').each(function(){
$('#classesList option[value="' + $(this).attr('value') + '"]').remove();
});
Entiendo que hacen dos cosas diferentes, pero no hasta el punto de que yo pueda decir "Necesito usar $ .each () en este caso y .each (function () {}) en otro caso.
¿Son intercambiables en absoluto? ¿Solo en algunos casos? ¿Nunca?
Respuestas:
Descripción:
Ejemplos
1) Función de uso
$.each()
var myArray = [10,20,30]; $.each( myArray, function(index, value) { console.log('element at index ' + index + ' is ' + value); }); //Output element at index 0 is 10 element at index 1 is 20 element at index 2 is 30
2) Método de uso
.each()
$('#dv').children().each(function(index, element) { console.log('element at index ' + index + 'is ' + (this.tagName)); console.log('current element as dom object:' + element); console.log('current element as jQuery object:' + $(this)); }); //Output element at index 0 is input element at index 1 is p element at index 2 is span
Recursos
fuente
de http://api.jquery.com/jQuery.each :
fuente
Realmente desea usar
$.each
con una matriz que no sea elementos o algo así. es decir:var x = ["test", "test2"];
Usarías
$.each(x...
para atravesar eso en lugar dex.each
:).each
es solo para elementos :)fuente
No hay diferencia funcional. Cada objeto jQuery posee un
.each()
método heredado dejQuery.fn
. Al llamar a estoobject method
, jQuery ya sabe sobre cuálArray (-like object)
iterar. En otras palabras, se repiteindexed propertys
desde el objeto jQuery actual.$.each()
por otro lado, es solo una "herramienta auxiliar" que recorre cualquier tipo deArray
oObject
, pero, por supuesto, debe indicarle a ese método qué objetivo desea iterar.También se ocupará de usted ya sea que pase en una matriz u objeto, hace lo correcto usando un
for-in
ofor loop
debajo del capó.fuente
El primero ejecutará la función de devolución de llamada a los elementos de la colección que ha pasado, pero su código no es sintácticamente correcto en este momento.
Debería ser:
$.each($('#myTable input[name="deleteItem[]"]:checked'), do_something);
Ver: http://api.jquery.com/jQuery.each/
El segundo ejecutará la función en cada elemento de la colección en la que lo está ejecutando.
Ver: http://api.jquery.com/each/
fuente
do_something
lugar de pasarlo. Esto es incorrecto a menosdo_something
que devuelva una función.En el primer caso, puede iterar sobre objetos jQuery y también otros elementos de matriz como se indica aquí:
jQuery.each ()
En el segundo caso, solo puede iterar sobre los objetos jQuery como se indica aquí:
.cada()
fuente
Por lo que entiendo,
$.each();
recorre un objeto o matriz y le brinda el iterador y el valor de cada elemento.$().each();
recorre una lista de objetos jQuery y le proporciona el iterador y el objeto jQuery.fuente
Tomado de http://api.jquery.com/jQuery.each/
fuente