【问题标题】:Use jquery to remove a div with no children使用 jquery 删除没有孩子的 div
【发布时间】:2009-02-09 06:21:16
【问题描述】:

如何使用 jquery 删除没有子元素的特定 div(至少没有非空格的子元素)。例如

<div id="outer">
    some content
    <div id="removeme"> 


    </div>
    some more content
</div>

想要完全删除 id="removeme" 的 div。

【问题讨论】:

    标签: jquery css


    【解决方案1】:

    删除id等于removeme的元素:

    $("#removeme").remove();
    

    仅当id 等于removeme 为空时删除元素:

    $("#removeme:empty").remove();
    

    删除所有空的&lt;div&gt;s:

    $("div:empty").remove();
    

    编辑:如果它不是空的,但有空格:

    if($.trim($("#removeme").text()) == "") {
      $("#removeme").remove();
    }
    

    【讨论】:

    • 我认为他只是通过给它一个 id 来引用该 div,但他实际上想删除页面上的所有空 div...这只是我的猜测。
    • 不,Ben 是正确的。如果特定的 div 为空,则想要删除它
    • 嗯,实际上这不起作用。空格算作子项吗?
    • 我猜如果你将 div 标记更改为自动关闭, :empty 会起作用:
    • 我敢肯定,但如果我可以将 div 更改为自动关闭,我以后不需要通过 jquery 删除 :)
    【解决方案2】:

    我去了:

    $('#outer > div').filter(function (index) { 
        return $(this).children().length < 1; 
    }).remove();
    

    这说:

    • 把#outer 的所有 div 子节点都给我
    • 使用过滤器去除任何有子节点的节点
    • 删除我们仍然选择的任何内容

    遗憾的是,如果 div 包含文本,这将删除它,这可能不是原始海报想要的。纯文本不算作子项。

    【讨论】:

      【解决方案3】:

      你也可以使用:

      $('div:empty').remove();

      http://docs.jquery.com/Selectors/empty

      【讨论】:

      • 所以 $('div#removeme:empty').remove() 只得到那个节点?
      • 是的,只有当它没有子元素或内部文本时。
      • 如果它有内部文本(尽管是空格)?
      • 那么没有。它不会选择或删除它。
      【解决方案4】:

      我想你想要这个:

      $('div#outer div:empty').remove();
      

      它将删除 div#outer 节点内的所有空 div

      【讨论】:

        【解决方案5】:

        我找不到忽略文本节点的选择器,所以这是我能想到的最快/最脏的代码 sn-p。

        $("#header").each(function() { 
            if($(this).children().length < 1) 
                $(this).remove() 
        });
        

        【讨论】:

        • 你能给我们解释一下吗?
        • 在这里,我们选择了一个不是父级的 div。 (没有子元素)请参阅 jQuery 选择器文档:docs.jquery.com/Selectors
        • 我不想选择并删除每个没有子元素的 div
        • 您询问如何使用 jquery 删除没有子级的 div。在这种情况下,只需使用 $("#removeme").remove()
        • 这看起来不像是在检查是否有孩子
        【解决方案6】:

        如果有子项为空,则可以指向子项,然后删除父项, 这不看空格,如果为空,它只会删除

        很喜欢;如果 li 为空,则会删除 #removeme

        if (!$("#tabs ul li").length) $('#tabs').remove();
        

        【讨论】:

          【解决方案7】:

          如果没有特定类的子级,则删除父级

          $('.parentClass:not(:has(.childClass))').remove();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-09-01
            • 1970-01-01
            • 2020-07-12
            • 2019-04-18
            • 1970-01-01
            • 1970-01-01
            • 2010-12-04
            相关资源
            最近更新 更多