скрыть содержимое ячейки, если дочерние области пусты - PullRequest
0 голосов
/ 30 ноября 2011

Существует таблица «OfficeInfo» с двумя строками по 2 ячейки в каждой.Каждая ячейка будет иметь информацию об Office, такую ​​как имя, адрес, телефон и указатель направления.Мне нужно скрыть ссылку направления (ссылка карты Google на основе значения адреса) или скрыть всю ячейку, если другая информация, такая как имя, адреса, телефон и т. Д., Пуста.ссылка тоже или целая клетка ... Как это сделать в 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 голосов
/ 01 декабря 2011

Вы можете использовать метод text () для этого

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

Здесь вы можете найти JSFiddle

Существует дополнительный элемент управления обрезкой ..

РЕДАКТИРОВАТЬ: Я просто добавляю некоторые дополнительные к решению Мртшермана ..

РЕДАКТИРОВАТЬ 2: Я изменил функцию, чтобы скрыть все элементы, если нет информации карты JSFiddle здесь
Если вы хотите удалить элементы (не скрывая), вы можете изменить

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

строку с:

$(this).children('*').remove();
0 голосов
/ 01 декабря 2011

Поскольку вы не включаете свой окончательный HTML, трудно сказать. Всегда старайтесь включать то, что мы увидим на странице, а не общие вызовы sharepoint.

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

В этом примере я проверяю, содержит ли каждая ячейка дочерние элементы, кроме класса карты. Если нет, то мы можем смело скрывать это. Вы увидите, что ячейка 1 показывает ссылку, потому что другие данные присутствуют, а ячейка 2 - нет.

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