jQuery的$。每次在追加元素()(jQuery append element during $.

2019-09-22 10:04发布

我试图多次追加在一个jQuery封闭之外定义的元素$.each()循环看到的- http://jsfiddle.net/benedict_w/8Pczs/

可能有人请解释为什么元素在循环的最后一次迭代只附?

<ul>
    <li>blah</li>
    <li>blah</li>
    <li>blah</li>
</ul>

使用下面的jQuery:

var remove = $('<a href="#">remove</a>');
$('li').each(function(){
    $(this).append(remove);       
});​

生产商:

<ul>
    <li>blah</li>
    <li>blah</li>
    <li>blah <a href="#">remove</a></li>
</ul>

Answer 1:

要追加每次都相同的元素。
各追加将它移动到下一个<li>

你需要clone()元素(或只是重新创建)为每个迭代。



Answer 2:

$('<a href="#">remove</a>').appendTo('li');

这将一个新元素附加到每li同时避免不必要的回路和jQuery对象的创作。

如果存在多于一个的目标元件,然而,插入的元件的克隆拷贝将被用于每个靶的第一之后创建,而新的一组(原始的元素加克隆)被返回。

http://api.jquery.com/appendTo/



Answer 3:

你不需要克隆元素插入。 根据定义append()

$('li').append('<a href="#">remove</a>'); 
//will append an <a> to every <li> in the "set of matched elements"

DEMO

更新 :如果你确实需要的each()的迭代器做其他的事情,为什么不定义闭合内的元素?

$('li').each(function(){
    var remove = $('<a href="#">remove</a>');
    $(this).append(remove);       
    //do other things
});​

更新2:只是保持回答高达日期从我从OP的评论学会

因为在你的问题,你提到一个独特的元素(关闭外部定义)。 其中,被附加在第一次迭代的DOM。 下一次你试图同一元素在DOM另一个节点追加。 jQuery的承认,因此,从原处分离它,创建另一个文档片段,然后将其连接到在DOM的新目标。



Answer 4:

定义变量“删除”以纯文本格式,即

var remove = '<a href="#">remove</a>';


Answer 5:

var remo[enter link description here][1]ve = $(

是搞乱你的代码。 这是因为附加其正在发生的元素..只是把它作为一个字符串,而不是一个选择或克隆对象..应该把这项工作为你做了,,

var remove = '<a href="#">remove</a>' ;
$('li').each(function(){
    $(this).append(remove);       
});​

你也可以使用appendTo避免迭代

$('<a href="#">remove</a>').appendTo('li');

检查已更新FIDDLE



文章来源: jQuery append element during $.each()
标签: append jquery