¿Cuál es la diferencia entre $.each (selector) y selector(selector).cada()
¿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 para la celda de la tabla que se está seleccionando y sobre la que se está actuando se ve así:
<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="' . $rowItem['itemID'] . '" /></td>
He revisado la documentación de jQuery, pero todavía no entiendo la diferencia. (¿Soy yo o esa documentación a veces es ligeramente "nebulosa" en claridad de contenido?)
Información añadida:
Al parecer, mi intento de ejemplos genéricos es confundir a la gente! Junto con el (anteriormente) falta paréntesis en el primer ejemplo. :(
El primer ejemplo viene de una línea en mi código que elimina el
para cualquier fila con una casilla de verificación marcada:$.each($('#classesTable input[name="deleteClasses[]"]:checked').parent().parent().parent().remove());
El segundo ejemplo viene de una situación en la que miro a través de la #classesTable para cualquier casilla de verificación marcada y eliminar su elemento coincidente 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 al punto de que pueda decir "Necesito usar $.cada() en este caso y .cada (function () {}) en otro caso.
¿Son intercambiables en absoluto? Sólo en algunos casos? Nunca?
8 answers
Descripción:
.each
es un iterador que se utiliza para iterar solo sobre jQuery colección de objetos mientrasjQuery.each
($.each
) es un general función para iterar sobre objetos y arrays javascript.
Ejemplos:
Array Javascript (u objeto js ) usando $.cada uno():
var myArray = [10,20,30];
jQuery.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
Uso de objetos jQuery .cada uno()
$('#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
Si está buscando más ejemplos+detalles, $.cada vs .cada uno()
Recursos
-
jQuery.each
($.each
) doc: https://api.jquery.com/jquery.each / -
.each
doc: http://api.jquery.com/each / - jQuery para recorrer elementos con la misma clase
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:33
De http://api.jquery.com/jQuery.each:
El $.cada función() no es la misma como .each (), que se usa para iterar, exclusivamente, sobre un objeto jQuery. El $.cada función () se puede utilizar para iterar sobre cualquier colección, ya sea es un mapa (objeto JavaScript) o un matriz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-07 13:21:03
Realmente quieres usar $.each
con una matriz que no sea elementos o algo así. ie:
var x = ["test", "test2"];
Usarías $.each(x...
para atravesar eso en lugar de x.each
:)
.each
es solo para elementos:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-07 13:19:23
No hay diferencia funcional. Cada objeto jQuery posee un método .each()
heredado de jQuery.fn
. Al llamar a este object method
, jQuery ya sabe cuál Array (-like object)
iterar. En otras palabras, recorre el indexed propertys
desde el objeto jQuery actual.
$.each()
por otro lado es solo una "herramienta auxiliar" que recorre cualquier tipo de Array
o Object
, pero por supuesto tienes que decirle a ese método qué objetivo quieres iterar.
También se encargará de usted si pasa en una matriz o objeto, hace lo correcto usando un for-in
o for loop
bajo el capó.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-07 13:20:31
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.
Debe ser:
$.each($('#myTable input[name="deleteItem[]"]:checked'), do_something);
Véase: http://api.jquery.com/jQuery.each /
El segundo ejecutará la función en cada elemento de la colección en la que la esté ejecutando.
Véase: http://api.jquery.com/each /
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-07 13:28:04
En el primer caso, puede iterar sobre objetos jQuery y también otros elementos de matriz como se indica aquí:
En el segundo caso solo puede itterate sobre objetos jQuery como se indica aquí:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-07 13:21:06
Por lo que entiendo $.each();
recorre un objeto o matriz y le da el iterador y el valor de cada elemento.
$().each();
recorre una lista de objetos jQuery y te da el iterador y el objeto jQuery.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-07 13:21:24
Tomado de http://api.jquery.com/jQuery.each/
La función
$.each()
no es la misma que.each()
, que se utiliza para iterar, exclusivamente, sobre un objeto jQuery. La función$.each()
se puede usar para iterar sobre cualquier colección, ya sea un mapa (objeto JavaScript) o una matriz. En el caso de una matriz, a la devolución de llamada se le pasa un índice de matriz y un valor de matriz correspondiente cada vez. (El valor también se puede acceder a través de la palabra clave this, pero Javascript siempre envuelva este valor como un objeto incluso si es un valor simple de cadena o número.) El método devuelve su primer argumento, el objeto que se iteró.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-07 13:32:47