Скрыть строку, если она содержит пустые столбцы - PullRequest
3 голосов
/ 24 января 2012

У меня есть таблица с парой строк, каждая строка с двумя столбцами, первый столбец будет содержать заголовок, а второй столбец будет иметь соответствующие значения. Иногда ячейки справа могут не иметь значений, поэтому он не имеетимеет смысл иметь только заголовок .. без значения .. Я могу либо скрыть заголовок в левой ячейке, который не имеет значения справа, либо саму строку.

Я придумал это, ноне работает ..

    $('.EventDetail tr').each(function(){      
        if(!$('td:not(:empty)',this).length)         
        $(this).hide();
}); 

Вот таблица.Мне интересно, если тег имеет какое-либо значение.ИЛИ у одного из них есть класс, а у другого нет ... разве это не приводит к тому, что он не работает?

<table cellpadding="10" class ="EventDetail">
    <tr>
        <td class="TableFields"><em>Who Should Enroll?:</em></td>
        <td>Everyone 18 and older who would like to attend</td>
    </tr>       
    <tr>
        <td class="TableFields"><em>Handicapped Access:</em></td>
        <td>Yes</td>
    </tr>
    <tr>
        <td class="TableFields"><em>Parking Notes:</em></td>
        <td></td>
    </tr>
    <tr>
        <td class="TableFields"><em>Instructor:</em></td>
        <td>John Filler</td>
    </tr>
</table>

Так что нет информации о парковке, поэтому я хочу скрыть левую ячейкус заголовком «Примечания по парковке».

Ответы [ 4 ]

3 голосов
/ 24 января 2012

Я думаю, что это будет работать:

$('.EventDetail tr').has('td:nth-child(2):empty').hide()

Вы можете попробовать его на jsFiddle .

0 голосов
/ 24 января 2012

Ваш селектор приведет к тому, что оператор if никогда не будет истинным для любой строки в вашем примере.$("td:not(:empty)") всегда выбирает элемент <td> с заголовком, поэтому длина всегда равна 1.if(!1) никогда не соответствует действительности.

Вы должны удалить двойной минус (! и :not), чтобы сделать его более понятным, а затем проверить, что длина (т. Е. Количество подходящих элементов) равна > 0.

0 голосов
/ 24 января 2012

Вы можете попробовать это:

    $(document).ready(function(){
    $('.EventDetail tr').each(function(){      
        if ( $(this).children().not('.TableFields').text().length == 0 )
            $(this).hide();
    }); 
});
0 голосов
/ 24 января 2012

Попробуйте это:

$('.EventDetail tr').each(function(){      
    if ($('td:empty',this).length > 0))
    $(this).hide();
});
...