Hasta donde sé, el siguiente código debería funcionar, creando un elemento <div>
y luego creando un elemento <p>
; la expresión debe resultar en un objeto jQuery con dos elementos:El método posterior de jQuery no funciona con los elementos recién creados
$("<div>first element's content</div>").after("<p>second element's content</p>");
Sin embargo, lo que consigo es muy diferente. The documentation (consulte el encabezado "Insertar nodos de DOM desconectados") me dice que el código anterior debería dar como resultado un objeto jQuery, capturar tanto fragmentos de código HTML como crear los dos elementos DOM. Pero, lo que he obtenido, en varias versiones diferentes de jQuery, todas por encima de 1.4, es un objeto jQuery con solo 1 nodo. Sin embargo, el siguiente código funciona bien, volviendo (lo que creo que es) el objeto correcto jQuery, dos elementos en el interior:
$("<div></div>").after("<p>second element's content</p>");
Y este ejemplo funciona así:
$("<div></div>").after("<p>second element's content</p>").after("<p>third element's content</p>");
parece que el .after()
El método funciona bien si el primer nodo DOM que se está creando está vacío, pero no cuando no lo está (independientemente del contenido de los nodos DOM posteriores que se le añaden).
¿Me falta algo sobre el funcionamiento interno de jQuery, peculiaridades DOM y/o peculiaridades de JavaScript, o es simplemente un error jQuery que persiste desde la versión 1.4 hasta la 1.7?
(Here's a meager JSFiddle demostrando el tema muy claramente.)
Como se menciona a continuación en los comentarios ** respuesta de ** elclanrs, 'add' es un sustituto viable, y he batido un [nuevo JSFiddle ] (http://jsfiddle.net/paulbruno/beFUF/) para demostrar que funciona. Sin embargo, esto no explica por qué el comportamiento mostrado en [los documentos] (http://api.jquery.com/after/) (e incluso sus comentarios, vea el hilo completo que contiene las respuestas de "MarkAndrewSlade") no es t disponible para el método 'after' de objetos jQuery de un elemento creado recientemente cuando ese elemento tiene contenido. –