Добавьте зебру, но игнорируйте скрытые элементы - PullRequest
3 голосов
/ 12 октября 2011

У меня есть следующий код, который фильтрует список в соответствии с тем, какой класс добавляется в элемент li. Полоска зебры работает хорошо, когда отображаются все элементы, но когда вы фильтруете и, скажем, один из элементов списка скрыт, полоса зебры не синхронизируется. Есть ли способ обойти это?

Я проверил этот пост, но не работает jQuery Table Zebra Чередование со скрытыми строками

Спасибо.

//Filter
$("#local-clubs-list li:visible:even").addClass("even");

$('ul#filter a').click(function() {  
    $(this).css('outline','none');  
    $('ul#filter .current').removeClass('current');  
    $(this).parent().addClass('current');  

    var filterVal = $(this).text().toLowerCase().replace(' ','-');  

    $('ul#local-clubs-list li').each(function() {                                 
        if(!$(this).hasClass(filterVal)) {  
            $(this).fadeOut('normal').addClass('hidden');
        } else {  
            $(this).fadeIn('slow').removeClass('hidden');
        }  

        $("#local-clubs-list li").removeClass("even");


        $("#local-clubs-list li:visible:nth-child(even)").addClass("even");
    });  


    return false;  
}); 

$('ul#filter a:eq(0)').trigger('click');

То, что я вижу в firbug, это

<li class="northern even">
<li class="northern">
<li class="north-dublin hidden even" style="display: none;">
<li class="northern">
<li class="northern even">
<li class="northern">
<li class="northern even">
<li class="northern">
<li class="northern even">

Ответы [ 3 ]

1 голос
/ 12 октября 2011

По какой-то причине скрытый не работает, и мне пришлось добавлять и удалять классы. Вот код, который работает.

//Filter

    function zebraRows(selector, className)
    {
        $(selector).removeClass(className).addClass(className);
    }
    $('#local-clubs-list li').addClass('visible');

    $('ul#filter a').click(function() {  
        $(this).css('outline','none');  
        $('ul#filter .current').removeClass('current');  
        $(this).parent().addClass('current');  

        var filterVal = $(this).text().toLowerCase().replace(' ','-');  

        $('ul#local-clubs-list li').each(function() {                                 
            if(!$(this).hasClass(filterVal)) {  
                $(this).fadeOut('normal').addClass('hidden');
                $(this).fadeOut('normal').removeClass('visible');

            } else {  
                $(this).fadeIn('slow').removeClass('hidden');
            }  
        });  

        $('#local-clubs-list li').removeClass('even');
        zebraRows('#local-clubs-list .visible:even', 'even');
        $('#local-clubs-list li').addClass('visible');
        return false;  
    }); 

    $('ul#filter a:eq(0)').trigger('click');
0 голосов
/ 19 мая 2014

Я также использую таблицы данных.Мне нравится, и Аллан это делает, но я не использую добавленные классы для «полосок зебры»

Если ваши пользователи прошли IE8, вы можете просто позволить CSS сделать это так:

tr:nth-child(even) {
    background-color: #000;
}

tr:nth-child(odd) {
    background-color: #FFF;
}
0 голосов
/ 12 октября 2011

Вам необходимо удалить класс even, а затем снова добавить этот класс в функцию фильтра.

Так что-то вроде

       $('ul#local-clubs-list li').each(function() {  
            if(!$(this).hasClass(filterVal)) {  
                $(this).fadeOut('normal').addClass('hidden');  
            } else {  
                $(this).fadeIn('slow').removeClass('hidden');  
            }  

         $("#local-clubs-list li").removeClass("even");
         $("#local-clubs-list li:nth-child(even)").addClass("even");

        });  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...