嗨,大家好,
实际上,当我尝试删除一些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
,这意味着您需要在.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是无效的
在上面的选择器中,我使用了属性等于过滤器,因此它可以工作,但是您实际上应该使用有效的HTML来避免其他地方的问题。
关于javascript - c.replace不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10246761/