我的$new
div
未包含以下代码:
var $new = $('<div>test</div>');
$('form').append($new.wrap("<div class='new'></div>")) ;
这有什么不对?
答案 0 :(得分:10)
更新:我们错误地认为$new.wrap()
无法正常工作,因为$ new中的 html不在HTML DOM树中,但是只是一个包含html元素的变量。根据与@A的讨论,这是错误的。沃尔夫。
但是,以下解决方案也不错。
var $new = $('<div class="test">test</div>');
$('form').append($new)//first append
.find('.test')//find appended element
.wrap('<div class="new" />');//then wrap to appended element
或者,如果您不想为附加元素提供课程,您可以这样做:
$new.appendTo('form')//I am still on $new (no need to find anything)
.wrap('<div class="new" />');//So, I can wrap to $new
现在,要坚持使用代码,您需要将父元素作为@A返回。沃尔夫提到:
$('form').append($new.wrap("<div class='new'></div>").parent());
我将解释一下这个why actually I need to return the parent element?
:
$new.wrap('<div class="new" />');//I am still in $new not in the .new element
.append($new.wrap('<div class="new" />');//append the $new not the .new object
因此,wrap方法按预期工作,但append()方法追加返回的html以及为什么在$new.wrap('<div class="new" />')
中返回的html是$('<div>test</div>');
而不是包装对象。你不会得到你所期望的。因此,为了获得预期的结果,我们可以使用:
$('form').append(
$new.wrap('<div class="new" />') //I am returning $new
.parent()//Now, I am returning '.new'
);//now .new object is appended to the form
这是追加方法的工作原理!
答案 1 :(得分:2)
$http.get('data/websites.json')
.success(function (data) {
$scope.websites = data;
});
返回元素本身,因此您需要返回wrap()
元素:
parent
或使用$('form').append($new.wrap("<div class='new'></div>").parent());
反转您的逻辑:
appendTo()