Pregunta Cuál es la diferencia entre $ .each (selector) y $ (selector) .each ()


¿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?


75
2017-07-07 13:16


origen


Respuestas:


Descripción: 

.each es un iterador que se usa para iterar solo jQuery   colección de objetos mientras jQuery.each ($.each) es un general   función para iterar sobre objetos y matrices de 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 buscas más ejemplos + detalles, $ .each vs .each ()

Recursos


96
2017-07-07 13:20



de http://api.jquery.com/jQuery.each:

La función $ .each () no es la misma   como .each (), que se usa para iterar,   exclusivamente, sobre un objeto jQuery. los   La función $ .each () se puede usar para   iterar sobre cualquier colección, ya sea   es un mapa (objeto JavaScript) o un   formación.


5
2017-07-07 13:21



¿Quieres realmente usar $.each con una matriz que no es elementos o algo. es decir:

var x = ["test", "test2"];

Tu usarías $.each(x... para atravesar eso en lugar de x.each :)

.each es solo para elementos :)


3
2017-07-07 13:19



No hay diferencia funcional Cada objeto jQuery posee un .each() método heredado de jQuery.fn. Al llamar esto object method, jQuery ya sabe qué Array (-like object) para iterar En otras palabras, gira sobre el indexed propertys del objeto jQuery actual.

$.each() por otro lado, es solo una "herramienta de ayuda" que gira sobre cualquier tipo de Array o Object, pero, por supuesto, debe indicarle a ese método qué objetivo desea iterar.
También se ocupará de ti, ya sea que transfieras una matriz u objeto, hace lo correcto con un for-in o for loop bajo el capó.


1
2017-07-07 13:20



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.

Ver: http://api.jquery.com/each/


1
2017-07-07 13:19



En el primer caso, puede iterar sobre los objetos jQuery y otros elementos de la matriz como se indica aquí:

jQuery.each ()

En el segundo caso, solo puede iterar sobre los objetos jQuery como se indica aquí:

.cada()


0
2017-07-07 13:21



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.


0
2017-07-07 13:21



Tomado de http://api.jquery.com/jQuery.each/

los $.each() la función no es lo mismo que .each(), que se usa para iterar, exclusivamente, sobre un objeto jQuery. los $.each() La función 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ó.


0
2017-07-07 13:19