有没有办法在将其添加到DOM之前“预先构建”一段HTML?
例如:
$mysnippet.append("<h1>hello</h1>");
$mysnippet.append("<h1>world</h1>");
$("destination").append($mysnippet);
其中 $ mysnippet 在DOM中不存在。我想动态构建一些html块,然后在适当的时候将它们插入到页面中。
答案 0 :(得分:59)
在处理更复杂的节点(尤其是嵌套的节点)时,在HTML中编写节点并隐藏其可见性是一种更好的方法。
然后,您可以使用JQuery的clone()方法制作节点的副本,并根据您的需要调整其内容。
E.g。用这个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>
这样做更快更容易理解:
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);
而不是如上所示在内存中创建整个节点。
答案 1 :(得分:39)
非常确切地说你是如何做到的
这个的一些延伸...
$('<div>').attr('id', 'yourid').addClass('yourclass').append().append()...
然后最后
.appendTo($("#parentid"));
答案 2 :(得分:9)
旧线程但我在搜索同样的时候遇到了它。
var memtag = $('<div />', {
'class' : 'yourclass',
'id' : 'theId',
'data-aaa' : 'attributevalue',
html : 'text between the div tags'
});
memtag
现在是内存中的html标记,可以根据需要插入到DOM中。如果您使用img
标记执行此类操作,则可以将图像“预加载”到缓存中以供日后使用。
答案 3 :(得分:0)
当然,只需将它们构建为字符串:
$mysnippet = "<h1>hello</h1>";
$mysnippet = $mysnippet + "<h1>world</h1>";
$("destination").append($mysnippet);
答案 4 :(得分:0)
答案 5 :(得分:0)
for /F "tokens=*" %%A in (%FILEPATH%output.txt) do (
setlocal EnableDelayedExpansion
echo %%A
SET /p name=%%A
echo name:%name%
FOR /F "tokens=2 delims=\" %%F IN ('wmic /NODE:"%name%" computersystem get UserName') DO (
SET username=%%F
)
echo %username%
pause
ENDLOCAL
)
创造了:
var sample =
$('<div></div>')
.append(
$('<div></div>')
.addClass('testing-attributes')
.text('testing'))
.html();
答案 6 :(得分:0)
你可以预建它,也可以附加事件,数据属性,内部html等等。
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);