2011-11-30 109 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

链接'地图和方向'现在是一个空链接,无论其他元素是否具有值,它都会在那里,所以当其他元素为空时,我想隐藏链接,直到其他元素不显示元素具有值..如果其他元素没有值,则需要消失。 –