Pregunta

Me parece que no puede encontrar una buena manera de hacer esto, pero parece que debe ser simple.Tengo un elemento que quiero añadir un div.Luego tengo otro elemento que quiero clonar y meter en el intermedio, div.Esto es lo que yo esperaba hacer:

$("#somediv > ul").after("<div id='xxx'></div>").append($("#someotherdiv").clone());

Esto parece estar cerca, pero no del todo allí.El problema con esto es que el "anexar" parece estar funcionando en el original "#somediv > ul" selector.Esto tiene algo de sentido, pero no es lo que yo quería.¿Cómo puedo más eficiente seleccione intermedio div que he añadido con el "después" y poner mi "#someotherdiv" en ella?

¿Fue útil?

Solución

Ir alrededor de la otra forma y uso insertAfter().

$("<div id='xxx'></div>")
    .append($("#someotherdiv").clone())
    .insertAfter("#somediv > ul")

Intente agregar tu generado DOM nodos para que el documento sólo después de terminar su trabajo.

Una vez que los nodos se agregan a la muestra de documentos, el navegador empieza a escuchar a cualquier cambio para actualizar la vista.Haciendo todo el trabajo antes de agregar los nodos de la muestra de documento de mejorar el rendimiento del navegador.

Otros consejos

uso insertAfter():

$("<div id='xxx'></div>").insertAfter("#somediv > ul").append($("#someotherdiv").clone())

¿Cómo puedo más eficiente seleccione intermedio div que he añadido con el "después" y poner mi "#someotherdiv" en ella?

@Vicente solución es, probablemente, la manera más rápida de obtener el mismo resultado.Sin embargo, si por cualquier razón usted necesita agregar el div con after() a continuación, deberá seleccionar y operar en él puede utilizar

.nextAll( [expr] )

Find all sibling elements after the current element.
Use an optional expression to filter the matched set.

Así que tu js se convierte en:

$("#somediv > ul")
    .after("<div id='xxx'></div>")
    .nextAll('#xxx')
    .append($("#someotherdiv").clone());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top