嗨,大家好,

实际上,当我尝试删除一些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/

10-09 15:30