Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除具有特定id的dom元素';s_Javascript_Jquery - Fatal编程技术网

Javascript 如何删除具有特定id的dom元素';s

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

我发现我可以这样写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的
  • 交叉点
    有两个数组中存在的所有
    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();