我想创建一个DOM节点,设置'id‘属性,然后将其附加到'body’。下面的代码似乎不起作用,因为jQuery没有将我的模板视为对象:
var template = "<li><div class='bar'>bla</div></li>";
template.find('li').attr('id','1234');
$(body).append(template);
我怎样才能告诉jQuery把它作为一个对象来处理,这样find()才能对它起作用?
发布于 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是工作所必需的。叹一口气。
顺便说一下,您可能也对microtemplating感兴趣。
发布于 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,这将使以后更改事情变得更容易。
发布于 2012-09-20 07:54:24
var template = $( "<li>", { id: "1234", html:
$( "<div>", { class: "bar", text: "bla" } )
});
$('body').append(template);
那这个呢?
https://stackoverflow.com/questions/759887
复制相似问题