如果子跨度为空,则隐藏单元格内容

时间:2011-11-30 19:51:27

标签: jquery hyperlink hide cell

有一个表'OfficeInfo',有两行,每行2个单元格。每个单元格都有Office信息,如姓名,地址,电话和方向链接。我需要隐藏方向链接(基于地址值的谷歌地图链接)或隐藏整个单元格,如果其他信息,如名称,地址,电话等是空白的..小时说其他一切都是空的,隐藏'地图和方向'链接以及整个单元格...如何在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>

2 个答案:

答案 0 :(得分:0)

由于您没有包含最终的HTML,因此很难说。始终尝试包含我们将在页面上看到的内容,而不是通用的sharepoint调用。

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

在此示例中,我检查每个单元格是否包含除地图类之外的任何子项。如果没有,那么我们可以安全地隐藏它。您将看到cell1显示链接,因为其他数据存在而单元格2不存在。

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

答案 1 :(得分:0)

您可以使用text()方法

$('.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
如果要删除元素(不隐藏),您可以更改< / p>

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

符合:

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