2011-11-30 111 views
-1

有一張表'OfficeInfo',其中兩行各有2個單元格。每個單元格都有Office信息,如姓名,地址,電話和方向鏈接。我需要隱藏方向鏈接(谷歌地圖鏈接基於地址值)或隱藏整個單元格,如其他信息,如名稱,addreses,電話等是空白..小兒子說其他一切都是空的,隱藏'地圖和方向'鏈接以及整個單元格...在JQuery中如何做?如果子跨度爲空,則隱藏單元格內容

<table class="OfficeInfo" border="0" style="width: 100%" cellspacing="10px" cellpadding="15px"> 
    <tr> 
     <td class="Office1" style="width=40%"> 
      <span class="OfficeName"> 
       Munster Women&#39;s Center<br /> 
      </span> 
      <span class="Address"> 
       1111 North Ronald Reagan Pkwy, <br />&#160;Avon,IN 46123  
      </span> 
      <span class="Phone"> 
       (317) 342-1254</span><br /> 
      <a class="mapdirectionsLink" href="#">map &#38; directions&#62;</a> 
      <br /> 
      <br /> 
      <span class="Hours"> 
       MTW: 9:00 AM- 5:00 PM 
      </span> 
     </td> 
     <td> 
      <span class="OfficeName"> </span> 
      <span class="Address"></span>          
      <span class="Phone"></span> 
      <br /> 
      <a class="mapdirectionsLink" href="#">map and directions</a> 
      <br /> 
      <br /> 
      <span class="Hours"></span> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Office3 
     </td> 
     <td> 
      Office4 
     </td> 
    </tr> 
</table> 

回答

0

由於您沒有包含最終的html,所以很難說。始終嘗試幷包括我們將在頁面上看到的內容,而不是通用的共享點呼叫。

http://jsfiddle.net/Ctjcv/7/

在這個例子中,我檢查每個單元格是否包含除地圖類以外的任何子女。如果沒有,那麼我們可以安全地隱藏它。您會看到cell1顯示鏈接,因爲其他數據存在,而cell 2不存在。

$('.OfficeInfo td').each(function() { 
    if ($(this).children(':empty').not('.mapdirectionsLink, br').length > 0) { 
     $(this).children('.mapdirectionsLink').hide(); 
    } 
}); 
+0

我更新了代碼,可以請看一下嗎? –

+0

當然,很容易添加。看到我更新的小提琴。您只需添加一個:空選擇器。 – mrtsherman

+0

我沒有做過的事情;沒有得到我的意思......無論如何都不會是孩子的元素。總會有那個鏈接出現。條件是如果該單元格中的其他元素爲空,則不需要顯示該鏈接,因此必須隱藏。您可以檢查任何span元素是否具有文本,如果其中任何人不喜歡, t,那麼它的理由足以隱藏鏈接。我們可以檢查OfficeName文本是否爲空,如果是,我們可以隱藏鏈接,因爲沒有辦公室名稱,不需要鏈接。 –

0

您可以用文字()方法爲

$('.OfficeInfo tr td').each(function() { 
    if ($(this).children().not('.mapdirectionsLink').text().replace(/^\s+|\s+$/g,"") == '') { 
     $(this).children('.mapdirectionsLink').hide(); 
    } 
}); 

你可以找到JSFiddle here

有一個額外的微調控制..

編輯:我只是添加一些額外的mrtsherman的解決方案..

編輯2:我改變函數可以隱藏所有的元素,如果沒有地圖信息JSFiddle here
如果你想刪除的元素(不隱藏),你可以改變

$(this).children('*').hide(); 

符合:

$(this).children('*').remove(); 
+0

你在這裏做什麼?我以爲OP想隱藏地圖鏈接。你爲什麼要替換其兄弟元素中的值? – mrtsherman

+0

問題:我需要隱藏方向鏈接(基於地址值的谷歌地圖鏈接),或者隱藏整個單元格,如果名稱,地址,電話等其他信息爲空。 而且,在更新的HTML中有一些空白的span元素,所以我認爲這是隱藏所有空元素的方式。 – Alper

+0

鏈接'地圖和方向'現在是一個空鏈接,無論其他元素是否具有值,它都會在那裏,所以當其他元素爲空時,我想隱藏鏈接,直到其他元素不顯示元素具有值..如果其他元素沒有值,則需要消失。 –