objects - jquery each break
Cuál es la diferencia entre $.each(selector) y $(selector).each() (8)
¿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 selecciona y se actúa de la siguiente manera se ve así:
<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="'' . $rowItem[''itemID''] . ''" /></td>
Revisé la documentación de jQuery, pero aún no entiendo la diferencia. (¿Soy yo o es esa documentación a veces un poco "nebulosa" en claridad de contenido?)
Información agregada:
¡Al parecer mi intento de ejemplos genéricos es confundir a la gente! Junto con el paréntesis (previamente) perdido en el primer ejemplo. :(
El primer ejemplo proviene de una línea en mi código que elimina <tbody> para 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 miro a través de la tabla #classes para ver si hay casillas marcadas y elimino 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 hasta el punto de que pueda decir "Necesito usar $ .each () en este caso y .each (function () {}) en otro caso.
¿Son intercambiables en absoluto? Solo en algunos casos? ¿Nunca?
Desea realmente usar $.each
con una matriz que no sea elementos o algo. es decir:
var x = ["test", "test2"];
Utilizaría $.each(x...
para recorrer eso en lugar de x.each
:)
.each
es solo para elementos :)
El primero ejecutará la función de devolución de llamada a los elementos de la colección que haya 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.
En el primer caso, puede iterar sobre los objetos jQuery y otros elementos de la matriz como se indica aquí:
http://api.jquery.com/jQuery.each/
En el segundo caso, solo puede iterar sobre los objetos jQuery como se indica aquí:
No hay diferencia funcional Cada objeto jQuery posee un método .each()
heredado de jQuery.fn
. Al invocar este object method
, jQuery ya sabe para qué Array (-like object)
iterar. En otras palabras, recorre las indexed propertys
del objeto jQuery actual.
$.each()
por otro lado es solo una "herramienta de ayuda" que gira sobre cualquier tipo de Array
u Object
, pero por supuesto tiene que decirle a ese método qué objetivo desea iterar.
También se ocupará de ti, ya sea que pases una Matriz u objeto, hace lo correcto al usar un for loop
for-in
o for loop
under the hood.
Por lo que entiendo $.each();
recorre un objeto o matriz y le proporciona el iterador y el valor de cada elemento.
$().each();
recorre una lista de objetos jQuery y le proporciona el iterador y el objeto jQuery.
Tomado de http://api.jquery.com/jQuery.each/
La función
$.each()
no es lo mismo que.each()
, que se usa 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. (También se puede acceder al valor a través de la palabra clave this, pero Javascript siempre ajustará este valor como un Objeto, incluso si es una cadena simple o valor numérico.) El método devuelve su primer argumento, el objeto que se iteró.
de http://api.jquery.com/jQuery.each :
La función $ .each () no es lo mismo que .each (), que se usa 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.
Descripción:
.each
es un iterador que se utiliza para iterar solo sobre la colección de objetos jQuery, mientras quejQuery.each
($.each
) es una función general para iterar sobre objetos y matrices JavaScript.
Ejemplos:
Array de Javascript (u objeto js) usando $ .each ():
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
Objetos jQuery con .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
Si busca más ejemplos + detalles, $ .each vs .each ()
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