Javascript c、 替换不是一项功能

Javascript c、 替换不是一项功能,javascript,jquery,dom,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

大家好,

实际上,当我试图删除一些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]);
        }
    }
我试过了。拆下。拆下,但还是一样的。我的jQuery版本是1.7.1.min.js

谢谢您的帮助。

列表还不是jQuery对象。使用$liste[i]

或使用

var liste= $('#tabs li');
节点列表上的迭代顺序

删除元素时,对正在修改的节点列表进行正向迭代可能是一个问题。从DOM中删除元素时进行反向迭代

滥用分离

此外,.detach的参数不执行嵌套查找,而是充当jQuery对象中现有元素的过滤器,应该传递一个字符串。似乎你真的想拆下li,这意味着你需要打电话。拆下li本身

var liste=document.getElementById("tabs").getElementsByTagName("li");

var i = liste.length

while(i--) {
    if(liste[i].id==2) {
        $(liste[i]).detach();
    }
}
移除可能是首选

请记住,如果使用.detach,任何jQuery数据都将被保留。如果您不再使用该元素,则应改用.remove

代码缩减

最后,因为您使用的是jQuery,所以您可以在选择器中执行所有这些操作

$('#tabs li[id=2]').remove(); // or .detach() if needed
有效的id属性

请记住这些关于ID的项目

页面上有重复的ID是无效的 在HTML4中,ID以数字开头是无效的
在上面的选择器中,我使用了attribute equals过滤器,因此它可以工作,但您确实应该使用有效的HTML来避免其他地方的问题。

也许我遗漏了一些东西,但是id是否应该与数字2匹配

var liste=document.getElementById("tabs").getElementsByTagName("li");

for(i=0;i<liste.length;i++) {
    if(liste[i].id==2) {
       $(liste[i]).detach();
    }
}

是的,我使用数字2来定位我必须删除的标记。ID通常不应该以数字开头,尝试使用a2或其他东西,并检查字符串而不是整数。非常感谢:D,它可以工作,实际上我可以有很多ID为2的,所以我做了一个循环。@ThomasSaldi:不客气,但请记住,在页面上有重复ID是无效的。您应该改用类。一个元素可以有多个类,如果它们被空格分隔。好的,是的,你说得对,我要改变这个小东西。祝这一正向迭代顺利,您需要将liste转换为数组,否则它会随着DOM的更改而更新,最终会跳过索引并在新建立的边界之外进行迭代。@amnotiam我一发布它就意识到了这一点,但我想没人会注意到=p…并且,修复了
var liste=document.getElementById("tabs").getElementsByTagName("li");

for(i=0;i<liste.length;i++) {
    if(liste[i].id==2) {
       $(liste[i]).detach();
    }
}
$("li", "#tabs").filter("#2").detach();
var two = document.getElementById('2');
two.parentNode.removeChild(two);