las siguientes obras: como se esperaba¿Por qué la iteración sobre objetos jQuery con .each() no me da objetos jQuery?
$(".foo").first().text("hi!")
... porque first()
devuelve un objeto jQuery.
Sin embargo, si quiero trabajar con el método text()
para todos los partidos, que tengo que hacer:
$(".foo").each(function(idx, obj) {
$(obj).text("hi!")
}
)
... porque te da each()
objetos DOM.
¿Cuál es el motivo del diseño detrás de esta desconcertante diferencia? ¿Cómo puedo evitar tener que crear un objeto jQuery para cada coincidencia?
Exactamente lo que iba a decir, más si first() no devolvió un objeto jQuery, tendría que usar $ ($ (selector) .first()), lo que de alguna manera entra en conflicto con el objetivo de jQuery de ser conciso. –
De acuerdo, tenía la impresión de que '$ (". Foo ")' hacía que los objetos jQuery _comienzaran_ y que se desglosaran en objetos DOM "básicos" cuando pasaban por 'each()'. Supongo que no es exactamente lo que está pasando aquí :) – badp
@Jon - Eso no es correcto. '$ (selector) .first()' * does * devuelve un objeto jQuery. No debe volver a envolverlo con '$ ($ (selector) .first())'. El único método jQuery (que yo sepa) que devuelve un elemento DOM simple es '.get (0)' cuando le pasa un número. Sin el argumento número, obtienes una matriz de elementos DOM. – user113716