I seguenti lavori come previsto:Perché iterare su oggetti jQuery con .each() non mi fornisce oggetti jQuery?
$(".foo").first().text("hi!")
... perché first()
restituisce un oggetto jQuery.
Tuttavia, se voglio lavorare con il metodo text()
per tutte le partite, ho bisogno di fare:
$(".foo").each(function(idx, obj) {
$(obj).text("hi!")
}
)
... perché ti dà each()
oggetti DOM.
Qual è la ragione di progettazione dietro questa sconcertante differenza? Come posso evitare di dover creare un oggetto jQuery per ogni abbinamento?
Esattamente quello che stavo per dire, più se first() non restituisce un oggetto jQuery, dovresti usare $ ($ (selector) .first()), che in qualche modo è in conflitto con l'obiettivo di jQuery di essere conciso. –
Ok, ho avuto l'impressione che '$ (". Foo ")' abbia creato oggetti jQuery _to per cominciare con _ e sono stati rimossi dagli oggetti DOM "di base" quando sono passati attraverso 'each()'. Immagino che non sia proprio quello che succede qui :) – badp
@ Jon - Non è corretto. '$ (selettore) .first()' * fa * restituisce un oggetto jQuery. Non dovresti riavvolgerlo di nuovo con '$ ($ (selettore) .first())'. L'unico metodo jQuery (a mia conoscenza) che restituisce un semplice elemento DOM è '.get (0)' quando si passa un numero. Senza l'argomento numero, ottieni una matrice di elementi DOM. – user113716