empty - jquery parent
JQuery: compila HTML en ''memoria'' en lugar de DOM (7)
Claro, solo compóngalos como una cadena:
$mysnippet = "<h1>hello</h1>";
$mysnippet = $mysnippet + "<h1>world</h1>";
$("destination").append($mysnippet);
¿Hay alguna manera de ''precompilar'' un fragmento de HTML antes de agregarlo al DOM?
Por ejemplo:
$mysnippet.append("<h1>hello</h1>");
$mysnippet.append("<h1>world</h1>");
$("destination").append($mysnippet);
donde $ mysnippet no existe en el DOM. Me gustaría construir dinámicamente algunos trozos de html y luego insertarlos en la página en los puntos apropiados más adelante.
Hay un complemento para esto:
Sí, más o menos exactamente cómo lo has hecho
Alguna extensión de esto ...
$(''<div>'').attr(''id'', ''yourid'').addClass(''yourclass'').append().append()...
y finalmente
.appendTo($("#parentid"));
Al tratar con nodos más complejos (especialmente los más anidados), es un mejor enfoque escribir el nodo en HTML y establecer su visibilidad oculta.
Luego puede usar el método clone () de JQuery para hacer una copia del nodo y adaptar su contenido a sus necesidades.
Por ejemplo, con este html:
<div class="template-node" style="display:none;">
<h2>Template Headline</h2>
<p class="summary">Summary goes here</p>
<a href="#" class="storylink">View full story</a>
</div>
es mucho más rápido y comprensible de hacer:
var $clone = $(''.template-node'').clone();
$clone.find(''h2'').text(''My new headline'');
$clone.find(''p'').text(''My article summary'');
$clone.find(''a'').attr(''href'',''article_page.html'');
$(''#destination'').append($clone);
que crear el nodo completo en la memoria como se muestra arriba.
Hilo viejo, pero me encontré con él mientras buscaba lo mismo.
var memtag = $(''<div />'', {
''class'' : ''yourclass'',
''id'' : ''theId'',
''data-aaa'' : ''attributevalue'',
html : ''text between the div tags''
});
memtag
ahora es una etiqueta html en memoria y se puede insertar en el DOM si lo desea. Si lo hace con una etiqueta img
, puede "precargar" imágenes en la memoria caché para usarlas más adelante.
var sample =
$(''<div></div>'')
.append(
$(''<div></div>'')
.addClass(''testing-attributes'')
.text(''testing''))
.html();
Lo que crea:
<div class="testing-attributes">testing</div>
Puede precompilarlo y también adjuntar eventos, así como atributos de datos, html interno, etc., etc.
var eltProps = {
css: {
border: 1,
"background-color": "red",
padding: "5px"
},
class: "bblock",
id: "bb_1",
html: "<span>jQuery</span>",
data: {
name: "normal-div",
role: "building-block"
},
click: function() {
alert("I was clicked. My id is" + $(this).attr("id"));
}
};
var elt = $("<div/>", eltProps);
$("body").append(elt);