从$ .each中的DOM中删除元素

时间:2015-12-15 10:47:20

标签: javascript jquery

我有元素列表,在某些事件中我想从dom中销毁它们。

if (appendedElements.length > 0) {
    $.each(appendedElements, function (i) {
        $(i).remove();
   })
}

appendedElements当然大于零,但我不是删除元素。这段代码出了什么问题?

5 个答案:

答案 0 :(得分:4)

问题是参数方法的第一个参数是元素的索引,而不是元素本身。这个作为第二个参数传递。尝试:

if (appendedElements.length > 0) {
    $.each(appendedElements, function (i, element) {
        $(element).remove();
       //i = 0, 1, 2....
   })
}

您可以在此处找到完整的参考示例:

http://api.jquery.com/jquery.each/

答案 1 :(得分:2)

如果appendedElements是一个jQuery对象或者是一个dom元素引用数组,那么就没有必要进行迭代,你可以像{/ p>那样调用remove方法

$(appendedElements).remove();

如前所述,问题是each回调的第一个参数是项目的索引,而不是项目本身。

答案 2 :(得分:1)

if (appendedElements.length > 0) {
    $.each(appendedElements, function (i) {
        $(this).remove(); // use this
   })
}

答案 3 :(得分:0)

您应该使用each回调函数的第二个参数:

if (appendedElements.length > 0) {
    $.each(appendedElements, function (index, element) {
        $(element).remove();
   })
}

答案 4 :(得分:0)

例如,如果您有列表......可以尝试不使用.each

<ul id="columar">
  <li>ok</li>
  <li>ok</li>
  <li>ok</li>
  <li>ok</li>
</ul>

如果您想要删除li列表,您可以使用此代码:

if (2 == 2) {
  $('#columar li').remove()
}

JSFiddle