Javascript 如何删除具有特定id的dom元素';s
我发现我可以这样写id:Javascript 如何删除具有特定id的dom元素';s,javascript,jquery,Javascript,Jquery,我发现我可以这样写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(functio
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的
。交叉点
有两个数组中存在的所有id的列表
$('li').filter(function() {
return $.inArray(this.id, intersection) !== -1;
}).remove();
.如果交集是一个ID列表,那么它就非常简单
使用直接DOM方法(无jQuery),您可以使用查找每个元素,获取其父节点,然后删除它:
var index;
for (index = 0; index < intersection.length; ++index) {
elm = document.getElementById(intersection[index]);
elm.parentNode.removeChild(elm);
}
或者,如果愿意,可以将jQuery与删除一起使用:
$.each(intersection, function(index, value) {
$("#" + value).remove();
});
更新2011/04/29:或者您可以利用数组#join
以#id1、#id2、#id3
的形式创建选择器,并通过一次调用将其删除:
$('#' + intersection.join(', #')).remove();
更新:有一些关于确保元素是li
元素的讨论。如果您真的需要这样做,下面是上面三个修改后的:
直接DOM(添加了if
):
使用每个
:
$.each(intersection, function(index, value) {
$("li#" + value).remove();
});
更新2011/04/29:使用Array#join
:
$('li#' + intersection.join(', li#')).remove();
您可能想提及您在这里使用的JavaScript框架/库。是jQuery吗?是的,我如何找到包含这些id的li并删除它们?可能是这样的:$(交叉点).each(函数(){$(liList.remove();})@但是,如果Patriotcow有id
(可能在多个页面上),它也会删除span
。每个方法都有效。但是假设我想删除在特定div中找到的li,使用相同的每个交叉点:任何建议?@Patrioticcow:当您使用id
值时,它是什么类型的元素(li
等)或它在哪里都不重要id
值必须是唯一的,因此如果您找到它,您将在任何地方找到它。但是,如果您编写的内容只有在这些元素具有id
值并且是li
元素或位于某个特定位置时才应该处理这些元素,那么您可以使用各种jQuery选择器来处理这些元素。jQuery几乎支持所有CSS3,并且有很多增强功能。您的特定示例将由“'div[is=test]>li#'+id”匹配,因此:$('div[is=test]>li#'+id).remove()代码>@Patrioticcow:关于jQuery选择器的更多信息。离题:您的“is”属性无效(“is”不是div
元素的有效属性)。如果您想要自定义属性,请在它们前面加上“data-”(例如,
)。从HTML5开始,所有前缀为“data-”的属性都会被验证程序忽略。“发生的情况是,我在两个单独的div中加载了相同的li,我只想删除其中一个。”如果您有两个ID相同的li
元素,则文档无效。您不能可靠地使用li
的ID来删除它,您必须通过结构来工作。如果您的div
具有ID“test”,则可以使用该ID。具体方式将根据您的结构而有所不同。如果“test”元素包含li
(直接或间接),则:$(“#test”).find(“li”).each(function(){If(this.id&$.inArray(intersection,this.id){$(this.remove();}})
示例:如果intersection
是一个数组,则它具有length
属性。因此If(intersection.length>0){/*它有值*/}
var index;
for (index = 0; index < intersection.length; ++index) {
$("li#" + intersection[index]).remove();
}
$.each(intersection, function(index, value) {
$("li#" + value).remove();
});
$('li#' + intersection.join(', li#')).remove();