wrap()方法和子元素

wrap() method and child elements

本文关键字:元素 方法 wrap      更新时间:2023-09-26

当我这样做时:

myUl = $(document.createElement("ul"));
myLi = $(document.createElement("li"));
myUl.append(myLi);

myLi成为myUl的子元素。这很好。

当我这样做时:

myUl = $(document.createElement("ul"));
myLi = $(document.createElement("li"));
myLi.wrap(myUl);

然后myUl有0个子元素,即使DOM看起来是一样的。这正常吗?

.wrap正在使用myUl的克隆,而不是像.append那样使用原始的。

当您考虑到在具有多个元素的jQuery对象上调用.wrap将把每个元素封装在所传递内容的单独副本中时,这是有意义的。

更新:从你的其他评论来看,我认为你想做的是:

myLi = $(document.createElement("li"));
myLi.wrap('<ul>');

这(或一些类似的代码)将用动态创建的新UL来包装现有元素。

您可以使用$("<ul>")而不是document.createElement。。。例如:

$("<li>").wrap($("<ul>"));

我会采用这种方法,而不是像那样试图将myLi包装在现有的myUl对象中

var $li = $("<li>");
//added class for another short-hand example
$("<ul class='myClass'>").append($li);  

假设您在页面上有一个现有元素,并且希望将其包装在新创建的JS对象中。。。

var $ul = $("<ul>");  
$('#myLi').appendTo($ul)
//and if you want to clone it
$('#myLi').clone().appendTo($ul)

来自文档:

".wrapp()函数可以接受任何字符串或对象传递给$()工厂函数以指定DOM结构。这结构可以嵌套在几个级别深,但应该只包含一个最内在的元素。"

http://api.jquery.com/wrap/

您是否包装了多个<li>