2011-12-01 198 views
1

我需要找到一个div元素是否填充了很多来自我没有控制权的系统表是空的。而我的意思是,如果div内的表没有任何内容。发现一个元素在jquery里面是否有空元素

这是系统产生剥离下来的标记:

<div class="shadowBox"> 
    <table> 
     <tbody> 
      <tr> 
       <td> 
        <table> 
         <tbody> 
          <tr> 
           <td> 
           </td> 
          </tr> 
         </tbody> 
        </table> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

在某些情况下,第二(最内部)表具有的内容内,并且在一些它没有的情况。如果第二个表格中没有内容,我想隐藏div。

$.trim($(".shadowBox table tbody tr td table tbody tr td").html())=="" 

是否有这样做的任何简单的方法:我可以去槽的结构和检查为TD的HTML实现这一目标?

回答

4

你可以使用text()

$.trim($(".shadowBox").text())==="" 

其中:

获取每个元素的合并文本内容设定匹配 元素,包括他们的后代。

如果是空的,隐藏

if($.trim($(".shadowBox").text())===""){ 
    $(".shadowBox").hide(); 
} 
+0

工作很好,谢谢 – Atzoya

+0

不知道text()方法返回来自后代的组合文本 – Atzoya

0

在jQuery的:emptydocs)选择

$("shadowBox table tbody tr td table tbody tr td:empty") 
+0

空不工作,我不得不修剪td的html,看看它的emtpy – Atzoya

1
$.trim($(".shadowBox table table").text())=="" 

应该这样做看看。 .text()将抓取所选元素中的所有文本(无html)。

1

您可能需要使用.text()

它会回报你的div的每一个后代的合并文本内容

if($(".shadowBox").text() == '') 
    console.log('Empty'); 
3

该解决方案将得到所有具有太极拳类没有的div有内容。

这里是代码:

$(".shadowBox").filter(function() { 
    return $.trim($(this).text()) === ""; 
}).hide(); 

测试出来here

相关问题