javascript - c.replace 不是一个函数

标签 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]);
            }
        }
    

    我尝试了 .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/

    相关文章:

    javascript - AirBnB React-日期未显示所选范围

    javascript - 如何使用 JavaScript 选择用户可以切换到的所有 html 元素?

    javascript - 无法在 JS 中使用 document.cookie 访问 cookie

    javascript - Rails 和 React : TypeError: Cannot call method 'map' of undefined

    javascript - Ajax 响应状态 200 但显示错误消息

    jquery - 在 JQuery 验证中验证以空格分隔的多个单词输入?

    html - 如何在不换行的情况下在 HTML 中显示字符串?

    html - Canvas 元素中的 3d 变换

    javascript - jquery从完整的html页面中删除最后一个表的方法

    javascript - 将数字转换为日期的时刻