繁体   English   中英

如何删除具有特定id的dom元素

[英]how to remove dom elements with specific id's

我发现我可以像这样克制id:

var unic = $('div.hidde').find('li').map(function(i, v) { return this.id; }).get();
var unic1 = $('div.hi').find('li').map(function(i, v) { return this.id; }).get();

我可以使用这个脚本组合它们:

var intersection = [];       
$(liList).each(function () {
    for (i in unic) {
        for (j in unic1) {
            if (unic[i] == unic1[j]) intersection.push(unic[i]);
        }
    }
});
alert(intersection);

另一个问题是如何删除交叉点返回的id的<li>'s

intersection具有两个数组中存在的所有ids的列表。

$('li').filter(function() {
    return $.inArray(this.id, intersection) !== -1;
}).remove();

jsFiddle

如果intersection是一个ID列表,那很简单。

使用直接DOM方法(没有jQuery),您可以使用getElementById查找每个元素,使用parentNode获取其父节点,然后使用removeChild将其删除:

var index;
for (index = 0; index < intersection.length; ++index) {
    elm = document.getElementById(intersection[index]);
    elm.parentNode.removeChild(elm);
}

但是值得注意的是,jQuery解决了IE6和IE7的 getElementById 实现中错误 ,所以如果你已经在使用jQuery,你可能也想用它来获得这些解决方法的优势。

或者使用jQuery的remove

var index;
for (index = 0; index < intersection.length; ++index) {
    $("#" + intersection[index]).remove();
}

或者,如果你愿意,使用jQuery的each remove

$.each(intersection, function(index, value) {
    $("#" + value).remove();
});

更新2011/04/29 :或者您可以利用Array#join#id1, #id2, #id3的形式创建一个选择器,并通过一次调用将它们删除:

$('#' + intersection.join(', #')).remove();

更新 :有一些关于确保元素是li元素的讨论。 如果你真的需要这样做,这里有三个,修改过:

直DOM(添加if ):

var index;
for (index = 0; index < intersection.length; ++index) {
    elm = document.getElementById(intersection[index]);
    if (elm.tagName === "LI") {
        elm.parentNode.removeChild(elm);
    }
}

jQuery选项(字面意思只是在“#”前加上“li”来表示“带有此ID的元素,但只有它是li ”):

对于循环:

var index;
for (index = 0; index < intersection.length; ++index) {
    $("li#" + intersection[index]).remove();
}

使用each

$.each(intersection, function(index, value) {
    $("li#" + value).remove();
});

更新2011/04/29 :使用Array#join

$('li#' + intersection.join(', li#')).remove();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM