c.replace不是一个功能

Tho*_*ldi 0 javascript jquery dom

大家好,

实际上,当我试图删除一些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]);
            }
        }
    
    Run Code Online (Sandbox Code Playgroud)

    我试过.detach和.remove,但它是一样的.我的jQuery版本是1.7.1.min.js.

    感谢帮助.

  • 小智 5

    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();
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    remove() 可能是首选

    请记住,如果使用.detach(),则保留任何jQuery数据.如果你没有进一步使用该元素,你应该使用.remove().

    // ...
        $(liste[i]).remove(); // clean up all data
    
    Run Code Online (Sandbox Code Playgroud)

    代码减少

    最后,因为你正在使用jQuery,你可以在选择器中完成所有这些...

    $('#tabs li[id=2]').remove(); // or .detach() if needed
    
    Run Code Online (Sandbox Code Playgroud)

    有效的id属性

    关于ID,请记住这些项目......

    • 在页面上具有重复的ID是无效的
    • 在HTML4中,使用以数字开头的ID是无效的

    在上面的选择器中,我使用了属性等于过滤器,因此它可以工作,但你应该使用有效的HTML来避免其他地方的问题.