NodeLIst 上的迭代顺序
在删除元素时对正在修改的 NodeList 进行前向迭代可能是一个问题。从 DOM 中删除元素时反向迭代。
滥用detach()
此外,.detach()
不执行嵌套查找的参数,而是充当 jQuery 对象中现有元素的过滤器,并且应该传递一个字符串。看来您实际上想要分离li
,这意味着您需要调用.detach()
自身li
...
var liste=document.getElementById("tabs").getElementsByTagName("li");
var i = liste.length
while(i--) {
if(liste[i].id==2) {
$(liste[i]).detach();
}
}
remove()
可能是首选
请记住,如果您使用.detach()
,将保留任何 jQuery 数据。如果您不再使用该元素,则应该使用该元素.remove()
。
// ...
$(liste[i]).remove(); // clean up all data
代码缩减
最后,由于您使用的是 jQuery,您可以在选择器中执行所有这些操作...
$('#tabs li[id=2]').remove(); // or .detach() if needed
有效的 id 属性
关于 ID,请记住这些项目...
- 页面上的 ID 重复是无效的
- 在 HTML4 中,ID 以数字开头是无效的
在上面的选择器中,我使用了attribute-equals过滤器,所以它会起作用,但你应该使用有效的HTML 以避免其他地方出现问题。