Jquery - 如果子元素没有文本,如何删除父元素?

时间:2014-03-26 15:53:03

标签: javascript jquery

如果子b为空而没有成功,我会尝试隐藏父元素li。你能告诉我我做错了什么吗?非常感谢你。

Jquery的:

$('.mod-links li a b').each(function(){
       if($(this).text() == 0){
        $(this).parent('li').remove();
       }
});

HTML:

<ul class="mod-links ui-listview ui-listview-inset ui-corner-all ui-shadow" data-inset="true" data-theme="d" data-role="listview">
 <li class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-btn-up-d" data-corners="false" data-shadow="false" data-iconshadow="true" data-wrapperels="div" data-icon="arrow-r" data-iconpos="right" data-theme="d"> <!-- parent element -->

    <div class="ui-btn-inner ui-li">
      <div class="ui-btn-text">
       <a class="small ui-link-inherit" href="/cz/cs/268_.html">
         <b></b> <!-- empty element -->
       </a>
      </div>
    <span class="ui-icon ui-icon-arrow-r ui-icon-shadow"> </span>
    </div> 

 </li>
</ul>

3 个答案:

答案 0 :(得分:2)

由于b中没有空的textnode,您可以使用:empty selector

$('.mod-links li').has('a b:empty').remove()

如果b可以有空格,那么

$('.mod-links li').filter(function () {
    return $.trim($(this).find('a b:empty').text()) == '';
}).remove()

答案 1 :(得分:1)

您可以使用 :empty 选择器选择空的b元素以及 .closest() 以获取最近的祖先{ {1}}并删除它:

li

答案 2 :(得分:0)

而不是if($(this).text() == 0){,请使用if($(this).is(":empty")){

jQuery的:

$('.mod-links li a b').each(function(){
       if($(this).is(":empty")){
        $(this).closest('li').remove();
       }
});

小提琴:http://jsfiddle.net/L7FPJ/

另请注意,我已将.parent('li')更改为.closest('li'),因为.parent仅从DOM树中的一个级别检索元素。

文档:.is:empty.closest