我需要创建一个div,它将包含DOM中已存在的另一个div。
<div class='a'></div>
至<div class='b'><div class='a'></div></div>
我创建了一个代码来执行此操作,但它会分离现有元素并将其附加到新元素上,因此它在父元素上的序列将会更改,它将添加到父元素的末尾。我认为这可能是未来的一个问题,例如,如果结构是用浮点数管理的,也许是?
所以我的代码是:
var obj = $('#existingDiv');
var p = obj.parent();
var d = obj.detach();
var n = p.append('<div id="newDiv"></div>');
$("#newdiv").append(d);
此代码的另一个问题是我必须创建对新div(id="newDiv"
)或whatelse的引用以便稍后使用它。如果函数不需要引用新元素会更好,只需使用另一种自动方式,但这不是真正的问题。
答案 0 :(得分:4)
您似乎在寻找wrap():
$("#existingDiv").wrap("<div id='newDiv'></div>");
此方法将新包装器元素插入现有元素的确切位置,并且不需要在包装器周围构建jQuery对象。
答案 1 :(得分:2)
您可以像这样使用.wrap()
-
$('div.a').wrap("<div class='b'></div>");
答案 2 :(得分:1)
可以使用.on()
方法解决代码中的第二个问题(创建对新创建元素的引用)。如果你对所有新元素(IE,ID都以“new”开头)有类似的命名约定,那么这个处理程序应该可以工作(点击,改为你需要的):
$(document).on('click', '[id^="new"]', function() {
//do stuff here
var currentID = $(this).attr("id"); // <--Grabs ID of clicked element
});