类中的替换行在jquery中排除display none

时间:2011-11-29 11:03:01

标签: javascript jquery

我在li中有一个ul列表来应用css类,我正在使用以下代码。

$('#' + firstContainer + ' li:nth-child(even)').addClass('AltRow');
$('#' + firstContainer + ' li:nth-child(odd)').removeClass('AltRow');
$('#' + secondContainer + ' li:nth-child(even)').addClass('AltRow');
$('#' + secondContainer + ' li:nth-child(odd)').removeClass('AltRow');

现在有一些li被设置为显示无,所以我需要在应用类时删除它们。

如何实现这一点。

4 个答案:

答案 0 :(得分:2)

以下内容适合您:

$('#' + firstContainer + ' li:visible').filter(":even").addClass("AltRow");
$('#' + firstContainer + ' li:visible').filter(":odd").removeClass("AltRow");
$('#' + secondContainer + ' li:visible').filter(":even").addClass("AltRow");
$('#' + secondContainer + ' li:visible').filter(":odd").removeClass("AltRow");

Here's a fiddle demo

答案 1 :(得分:2)

可能更短/更清洁:

$('#' + firstContainer + ' li, #' + secondContainer + ' li').removeClass('AltRow');
$('#' + firstContainer + ' li:visible:even').addClass('AltRow');
$('#' + secondContainer + ' li:visible:even').addClass('AltRow');

这是jsFiddle

答案 2 :(得分:-1)

$('#' + firstContainer + ' li').removeClass('AltRow').is(':visible:even');
$('#' + secondContainer + ' li').removeClass('AltRow').is(':visible:even');

编辑:我的不好我没有阅读每一行代码

答案 3 :(得分:-1)

$('#' + firstContainer + ' li:even:visible').addClass('AltRow');
$('#' + firstContainer + ' li:odd:visible').removeClass('AltRow');
$('#' + secondContainer + ' li:even:visible').addClass('AltRow');
$('#' + secondContainer + ' li:odd:visible').removeClass('AltRow');