2011-12-01 129 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

相關問題