创建包含现有元素的元素

时间:2013-05-17 13:35:31

标签: jquery html dom

我需要创建一个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的引用以便稍后使用它。如果函数不需要引用新元素会更好,只需使用另一种自动方式,但这不是真正的问题。

3 个答案:

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

API参考:http://api.jquery.com/on/