[英]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.