我有元素列表,并且在某些事件中,我想从dom中销毁它们。
if (appendedElements.length > 0) {
$.each(appendedElements, function (i) {
$(i).remove();
})
}
appendedElements
当然大于零,但我不删除元素。这段代码有什么问题?
我有元素列表,并且在某些事件中,我想从dom中销毁它们。
if (appendedElements.length > 0) {
$.each(appendedElements, function (i) {
$(i).remove();
})
}
appendedElements
当然大于零,但我不删除元素。这段代码有什么问题?
问题是参数方法的第一个参数是元素的索引,而不是元素本身。这一个是作为第二个参数传递的。尝试:
if (appendedElements.length > 0) {
$.each(appendedElements, function (i, element) {
$(element).remove();
//i = 0, 1, 2....
})
}
举例整体参考,你可以在这里找到:
if (appendedElements.length > 0) {
$.each(appendedElements, function (i) {
$(this).remove(); // use this
})
}
好吧,这应该也是一样,不完全是jquery的建议,如果你想将该方法与其他对象绑定,也会出现问题:) – mikus
如果appendedElements
是一个jQuery对象或者是DOM元素引用数组那么就没有需要迭代,您可以调用remove
方法,如
$(appendedElements).remove();
正如已经提出的问题是each
回调的第一个参数是项目的索引,而不是项目本身。
您应该使用each
回调函数的第二个参数:
if (appendedElements.length > 0) {
$.each(appendedElements, function (index, element) {
$(element).remove();
})
}
你可以尝试没有.each
例如,如果你有列表...类似的东西
<ul id="columar">
<li>ok</li>
<li>ok</li>
<li>ok</li>
<li>ok</li>
</ul>
,如果你想删除李列表,您可以使用此代码:
if (2 == 2) {
$('#columar li').remove()
}
共享整个代码 – ozil