使用jquery </ul>删除空<ul>标记

时间:2009-09-26 11:23:23

标签: jquery

我有上面的代码

     ` <ul id="jsddm">

                            <li><a href="Default.aspx">
                                Menu</a>
                                <ul style="visibility: hidden;">


                                            <li><a href="Content.aspx?ID=153">
                                                SubMenu</a></li>


                                            <li><a href="Content.aspx?ID=152">
                                                SubMenu</a></li>

                                </ul>
                            </li>

                            <li><a href="#">
                                Menu</a>
                                <ul style="visibility: hidden;">

                                </ul>
                            </li>

                </ul>
            </div>`          

我想删除空的sub “ul”标签,当我的页面加载时,这些标签没有“li”标签和jquery。 我能怎么做?谢谢你的帮助。

6 个答案:

答案 0 :(得分:27)

$('ul').not(':has(li)').remove();

答案 1 :(得分:9)

$("ul").each(
  function() {
    var elem = $(this);
    if (elem.children().length == 0) {
      elem.remove();
    }
  }
);

答案 2 :(得分:4)

如果您的UL元素确实为空,并且不包含任何空格,则jQuery :empty选择器将起作用。

要检查空白和带空格的元素,您可以执行以下操作:

$("#jsddm ul").each(function(i, el) {
    // Remove white space
    var html = $(el).html().replace(/\s+/, "");

    // Check if element is :empty or length of html is zero
    if ($(el).is(":empty") || html.length == 0)
        $(el).remove();
});

答案 3 :(得分:3)

我认为这就是你要找的东西:

$('#jsddm ul').each(function() {
  if ($(this).children().length == 0) {
    $(this).remove();
  }
});

它删除了id为jsddm且不包含子节点的元素下的所有<ul>元素。

答案 4 :(得分:0)

我想:

$('li ul:empty').remove();

会做你想做的事。

答案 5 :(得分:0)

试试这个:

$(document).ready(function () {
    $("#jsddm ul").empty();
});