我有以下代码,根据添加到li元素的类过滤列表。当所有项目都显示时,斑马条纹工作正常,但是当你过滤并让我们说其中一个列表项被隐藏时,斑马条纹就会失去同步。有办法解决这个问题吗?
我已经检查了这篇文章但是没有工作jQuery Table Zebra Striping with hidden rows
感谢。
//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">
答案 0 :(得分:1)
由于某种原因,隐藏不起作用,我不得不添加和删除类。这是有效的无用代码。
//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');
答案 1 :(得分:0)
您需要删除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");
});
答案 2 :(得分:0)
我也使用数据表。喜欢它和艾伦摇滚它,但我没有使用添加的类,斑马条纹&#39;
如果您的用户已经过IE8,您可以让CSS这样做:
tr:nth-child(even) {
background-color: #000;
}
tr:nth-child(odd) {
background-color: #FFF;
}