Jquery 创建包含现有元素的元素
我需要创建一个div,其中包含DOM中已经存在的另一个divJquery 创建包含现有元素的元素,jquery,html,dom,Jquery,Html,Dom,我需要创建一个div,其中包含DOM中已经存在的另一个div 至 我创建了一个代码来实现这一点,但是它分离了现有的元素并将其附加到新的元素上,因此它在父元素上的顺序将改变,它将添加到父元素的末尾。我认为这在将来可能会成为一个问题,例如,如果结构使用浮动进行管理,也许 所以我的代码是: var obj = $('#existingDiv'); var p = obj.parent(); var d = obj.detach(); var n = p.append('<div id="newD
至
我创建了一个代码来实现这一点,但是它分离了现有的元素并将其附加到新的元素上,因此它在父元素上的顺序将改变,它将添加到父元素的末尾。我认为这在将来可能会成为一个问题,例如,如果结构使用浮动进行管理,也许
所以我的代码是:
var obj = $('#existingDiv');
var p = obj.parent();
var d = obj.detach();
var n = p.append('<div id="newDiv"></div>');
$("#newdiv").append(d);
var obj=$('existingDiv');
var p=obj.parent();
var d=obj.detach();
var n=p.append(“”);
$(“#newdiv”)。追加(d);
这段代码的另一个问题是,我必须创建一个对新div的引用(
id=“newDiv”
)或稍后使用它的内容。如果函数不需要引用新元素,就更好了,只需使用另一种自动方式,但这不是真正的问题。您似乎正在寻找:
$(“#existingDiv”).wrap(“”);
此方法将在现有元素所在的确切位置插入新的包装器元素,并且不需要在包装器周围构建jQuery对象。您可以像这样使用.wrap()
-
$('div.a').wrap("<div class='b'></div>");
$('div.a').wrap(“”);
回答代码中的第二个问题(创建对新创建元素的引用)可以使用.on()
方法完成。如果您对所有新元素都有类似的命名约定(即,ID都以“new”开头),那么这个处理程序应该可以工作(用于单击,更改为您需要的):
$(文档)。在('click','id^=“new”]'上,函数(){
//在这里做事
var currentID=$(this.attr(“id”);//谢谢你,伙计,你的答案是对的,但我标记了Frédéric,因为他先回答了。
$('div.a').wrap("<div class='b'></div>");
$(document).on('click', '[id^="new"]', function() {
//do stuff here
var currentID = $(this).attr("id"); // <--Grabs ID of clicked element
});