大家好,
实际上,当我尝试删除一些 DOM 元素时,我得到了“c.replace 不是一个函数”,但我不明白。
我想从 DOM 中删除一些
var liste=document.getElementById("tabs").getElementsByTagName("li");
for(i=0;i<liste.length;i++)
{
if(liste[i].id==2)
{
$("#tabs").detach(liste[i]);
}
}
我尝试了 .detach 和 .remove 但它是相同的。我的 jQuery 版本是 1.7.1.min.js。
感谢您的帮助。
最佳答案
NodeLIst 上的迭代顺序
在删除元素时对正在修改的 NodeList 进行前向迭代可能会出现问题。从 DOM 中删除元素时反向迭代。
<小时/>滥用detach()
此外,.detach()
的参数不执行嵌套查找,而是充当 jQuery 对象中现有元素的过滤器,并且应该传递一个字符串。看来您确实想要分离 li
,这意味着您需要在 li
本身上调用 .detach()
...
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 以避免其他地方出现问题。
关于javascript - c.replace 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10246761/