使用 javascript 将数据插入到预制的 dom 元素中
Inserting data into preformed dom elements with javascript
我正在写一个漂亮的 javascript 沉重的网页,想知道是否有一种更简洁的方法来组成 html 将插入到 dom 中的元素。目前我正在做类似的事情:
var some_div = "<div class='yaba daba doo' "
some_div += "data-foo='" + some_handy_variable + "'>" + some_html_content + "</div>";
这应该呈现为:
<div class='yaba daba doo' data-foo='some handy id'>html content</div>
但是到达那里的过程并不那么容易解析:(有没有办法预先形成div即
var some_div = "<div class='yaba daba doo' data-foo=''></div>"
然后以某种方式插入 data/variables 然后让 some_div 变量呈现为
<div class='yaba daba doo' data-foo='some handy id'>html content</div>
你更喜欢这样的东西吗?您也可以用同样的方式添加类。
$("<div class='yaba daba doo'>")
.prop("data-foo", "some handy id")
.html("html content")
或者像这样:
$("body").append(
$("<div class='yaba daba doo' data-foo='some handy id'>html content</div>")
)
当然可以:
var some_div = $("<div class='yaba daba doo'></div>") // create the div and store in variable
some_div.attr("data-foo", "some handy id"); // add attribute
some_div.html("html content") // set html
并且您可以使用任何其他 jquery 动态方法 div
我发现使用 jQuery
附加属性非常容易
$("<div>", {
id: "someDiv",
css: {
height: "50px",
width: "50px"
}
}.appendTo("body")
您是否考虑过使用模板框架,例如 Handlebars.js?它可能会帮助您整理您提到的 JS 代码。你会有这样的对象:
var o = { Class: 'yaba daba doo', Data-Foo: 'Some handy id', html: 'Something here' }
还有一个 myTemplate
看起来像:
<div class='{{Class}}' data-foo='{{Data-Foo}}'>{{html}}</div>
然后,您可以使用该模板填充您需要的任何数据。
var template = Handlebars.Compile(myTemplate);
var myResult = template(o);
我知道这并不完全符合您的要求,只是想提供一个解决方案,帮助您保持一切更简洁、更具可扩展性。 :) 考虑一下!
我认为您可以使用 JavaScript 创建 DOM 元素的方式,例如:
<code>
var divEle = document.createElement("div");
divEle.class = "yaba daba doo";
divEle.data-foo = "some handy id";
</code>
在此之后,将该元素添加为任何其他 DOM 元素的子元素。
<code>
document.body.appendChild(divEle);
</code>
我正在写一个漂亮的 javascript 沉重的网页,想知道是否有一种更简洁的方法来组成 html 将插入到 dom 中的元素。目前我正在做类似的事情:
var some_div = "<div class='yaba daba doo' "
some_div += "data-foo='" + some_handy_variable + "'>" + some_html_content + "</div>";
这应该呈现为:
<div class='yaba daba doo' data-foo='some handy id'>html content</div>
但是到达那里的过程并不那么容易解析:(有没有办法预先形成div即
var some_div = "<div class='yaba daba doo' data-foo=''></div>"
然后以某种方式插入 data/variables 然后让 some_div 变量呈现为
<div class='yaba daba doo' data-foo='some handy id'>html content</div>
你更喜欢这样的东西吗?您也可以用同样的方式添加类。
$("<div class='yaba daba doo'>")
.prop("data-foo", "some handy id")
.html("html content")
或者像这样:
$("body").append(
$("<div class='yaba daba doo' data-foo='some handy id'>html content</div>")
)
当然可以:
var some_div = $("<div class='yaba daba doo'></div>") // create the div and store in variable
some_div.attr("data-foo", "some handy id"); // add attribute
some_div.html("html content") // set html
并且您可以使用任何其他 jquery 动态方法 div
我发现使用 jQuery
附加属性非常容易 $("<div>", {
id: "someDiv",
css: {
height: "50px",
width: "50px"
}
}.appendTo("body")
您是否考虑过使用模板框架,例如 Handlebars.js?它可能会帮助您整理您提到的 JS 代码。你会有这样的对象:
var o = { Class: 'yaba daba doo', Data-Foo: 'Some handy id', html: 'Something here' }
还有一个 myTemplate
看起来像:
<div class='{{Class}}' data-foo='{{Data-Foo}}'>{{html}}</div>
然后,您可以使用该模板填充您需要的任何数据。
var template = Handlebars.Compile(myTemplate);
var myResult = template(o);
我知道这并不完全符合您的要求,只是想提供一个解决方案,帮助您保持一切更简洁、更具可扩展性。 :) 考虑一下!
我认为您可以使用 JavaScript 创建 DOM 元素的方式,例如:
<code>
var divEle = document.createElement("div");
divEle.class = "yaba daba doo";
divEle.data-foo = "some handy id";
</code>
在此之后,将该元素添加为任何其他 DOM 元素的子元素。
<code>
document.body.appendChild(divEle);
</code>