2011-02-16 51 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