2014-03-26 52 views
1

我嘗試隱藏父元素li,如果子b沒有成功則爲空。你能告訴我我做錯了什麼嗎?非常感謝你。jquery - 如果子元素沒有文本,如何刪除父元素?

的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> 

回答

1

您可以使用:empty選擇器選擇空b元素以及.closest()得到最接近的祖先li並將其刪除:

$('b:empty').closest('li').remove(); 
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樹檢索元素。

Docs:.is:empty.closest

2

由於在b沒有空textnode你可以使用:空選擇

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

如果b可以有空格然後

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