Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 创建包含现有元素的元素_Jquery_Html_Dom - Fatal编程技术网

Jquery 创建包含现有元素的元素

Jquery 创建包含现有元素的元素,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

我需要创建一个div,其中包含DOM中已经存在的另一个div

我创建了一个代码来实现这一点,但是它分离了现有的元素并将其附加到新的元素上,因此它在父元素上的顺序将改变,它将添加到父元素的末尾。我认为这在将来可能会成为一个问题,例如,如果结构使用浮动进行管理,也许

所以我的代码是:

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
});