首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将DOM节点创建为对象?

如何将DOM节点创建为对象?
EN

Stack Overflow用户
提问于 2009-04-17 10:22:50
回答 5查看 112.2K关注 0票数 54

我想创建一个DOM节点,设置'id‘属性,然后将其附加到'body’。下面的代码似乎不起作用,因为jQuery没有将我的模板视为对象:

var template = "<li><div class='bar'>bla</div></li>";
template.find('li').attr('id','1234');
$(body).append(template);

我怎样才能告诉jQuery把它作为一个对象来处理,这样find()才能对它起作用?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-04-17 10:32:50

我会先把它放到DOM中。我不确定为什么我的第一个例子失败了。这真的很奇怪。

var e = $("<ul><li><div class='bar'>bla</div></li></ul>");
$('li', e).attr('id','a1234');  // set the attribute 
$('body').append(e); // put it into the DOM     

将e( returns元素)放入jQuery context中,将在其中应用CSS选择器。这可以防止它将ID应用于DOM树中的其他元素。

问题似乎是您没有使用UL。如果您将一个裸露的li放在DOM树中,您将会遇到问题。我认为它可以处理/解决这个问题,但它不能。

你可能不会为了你的“真正”实现而将裸露的LI放在你的DOM树中,但是UL是工作所必需的。叹一口气。

示例:http://jsbin.com/iceqo

顺便说一下,您可能也对microtemplating感兴趣。

票数 74
EN

Stack Overflow用户

发布于 2009-04-17 10:33:44

试试这个:

var div = $('<div></div>').addClass('bar').text('bla');
var li = $('<li></li>').attr('id', '1234');
li.append(div);

$('body').append(li);

显然,将li直接附加到正文是没有意义的。基本上,诀窍是用$('your html here')构造DOM元素树。我建议使用CSS修饰符(.text(),.addClass()等),而不是让jquery解析原始的HTML,这将使以后更改事情变得更容易。

票数 27
EN

Stack Overflow用户

发布于 2012-09-20 07:54:24

var template = $( "<li>", { id: "1234", html:
  $( "<div>", { class: "bar", text: "bla" } )
});
$('body').append(template);

那这个呢?

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/759887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档