Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 如何使用jquery删除ul列表中的空li?_Javascript_Jquery - Fatal编程技术网

Javascript 如何使用jquery删除ul列表中的空li?

Javascript 如何使用jquery删除ul列表中的空li?,javascript,jquery,Javascript,Jquery,我有以下HTML结构: <ul> <li><a>one</a></li> <li><a>two</a></li> <li></li> <li><a>three</a></li> <li><a>four</a></li> &l

我有以下HTML结构:

<ul>
    <li><a>one</a></li>
    <li><a>two</a></li>
    <li></li>
    <li><a>three</a></li>
    <li><a>four</a></li>
    <li></li>
    <li><a>five</a></li>
</ul>
  • 一个
  • 两个
我需要删除没有任何内容的
li
元素(
  • 在jQuery中如何实现这一点

    $('li').each(function(){
    if($(this).html() == "" || typeof($(this).html())=="undefined")
    {
        $(this).remove
    }
    })
    
    我建议您在比较之前修剪html,这样您就不会计算:

    <li>
    </li>
    

    未经测试,所以如果不适合你,请告诉我

    $('li').each(function() {
        var li = $(this);
        if (li.html() == '') {
          li.remove();
        }
    });
    

    只需要一个jQuery选择器

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

    您可以使用
    过滤器
    方法运行自定义函数以查找要删除的元素:

    $('ul li').filter(function(){ return $(this).text() == '' }).remove();
    
    应能够使用选择器:

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

    尝试以下操作:

    $('li').filter(function() { return !$(this).html(); }).remove();
    

    我也会选择这种方式,但请您解释一下为什么添加了
    typeof($(this).html())==“undefined”
    ?以防止IE出现问题。
    html
    方法是一种方法,而不是属性。
    $('li:empty').remove();
    
    $('li').filter(function() { return !$(this).html(); }).remove();
    
    
    $('ul li:empty').remove();
    //OR
    $('ul li').filter(function() {return $(this).text()​​​​​​​ == '';}).remove();​