Per quanto posso dire, il seguente codice dovrebbe funzionare, creando un elemento <div>
e quindi creando un elemento <p>
; l'espressione dovrebbe risultare in un oggetto jQuery con due elementi:jQuery dopo il metodo non funziona con elementi appena creati
$("<div>first element's content</div>").after("<p>second element's content</p>");
Tuttavia, ciò che ottengo è molto diverso. The documentation (vedere l'intestazione "Inserimento di nodi DOM disconnessi") mi dice che il codice sopra dovrebbe risultare in un oggetto jQuery, afferrando entrambi gli snippet HTML e creando i due elementi DOM. Ma, quello che ho ottenuto, in diverse versioni di jQuery, tutte sopra 1.4, è un oggetto jQuery con solo 1 nodo. Tuttavia, il seguente codice funziona bene, il ritorno (quello che credo sia) l'oggetto giusto jQuery, due elementi all'interno:
$("<div></div>").after("<p>second element's content</p>");
E questo esempio funziona così:
$("<div></div>").after("<p>second element's content</p>").after("<p>third element's content</p>");
Sembra che il .after()
il metodo funziona correttamente se il primo nodo DOM che viene creato è vuoto, ma non quando non lo è (indipendentemente dal contenuto dei successivi nodi DOM aggiunti ad esso).
Mi manca qualcosa sugli interni di jQuery, eccentrici domini DOM e/o peculiarità JavaScript, oppure si tratta semplicemente di un bug jQuery persistente dalla versione 1.4 alla 1.7?
(Here's a meager JSFiddle dimostrando la questione abbastanza chiaramente.)
Come indicato di seguito nei commenti a ** risposta elclanrs **, 'add' è un sostituto valido, e ho montato un [nuovo JSFiddle ] (http://jsfiddle.net/paulbruno/beFUF/) per dimostrare che funziona. Tuttavia, questo non spiega perché il comportamento visualizzato su [i documenti] (http://api.jquery.com/after/) (e anche i suoi commenti, vedi l'intero thread contenente le risposte da "MarkAndrewSlade") non è t disponibile per il metodo 'dopo' di oggetti jQuery di un elemento appena creato quando quell'elemento ha contenuto. –