2011-02-16 50 views
1

我有這個標記:jQuery來隱藏家長,如果孩子沒有文本

<li class="GRID_ITEM" id="123"> 
    <img class="imgUrl" src="search_logo_big.png"> 
    <div class="title"></div> 
</li> 

我想隱藏li.GRID_ITEM如果div.title沒有文字。

我不知道如何在JQ中做到這一點。謝謝!!!

回答

6

還有的:empty選擇:

$('li.GRID_ITEM:has(div.title:empty)').hide(); 

但要注意的是:empty嚴格意味着沒有文本(包括空格),並沒有子元素。如果你想處理的情況下,包括空格或子元素,然後使用:

$('li.GRID_ITEM').filter(function() { 
    return $.trim($(this).find('div.title').text()).length == 0; 
}).hide(); 

由於SIME維達斯指出,這也將隱藏任何父說沒有在所有子元素。如果這不是你想要的,你可以試試這個變化,這如果子元素存在額外的檢查:

$('li.GRID_ITEM').filter(function() { 
    var title = $(this).find('div.title'); 
    return title.length && $.trim(title.text()).length == 0; 
}).hide(); 
+0

@Box你的第二個文檔片斷還隱藏了沒有div.title後裔所有li.GRID_ITEM元素。 – 2011-02-16 03:40:16