2

我正在使用

$(".entry").filter(":odd").addClass('alt');

$(document).ready(),以方便使用“入口”类对所有内容进行斑马条纹处理。

在与页面交互的过程中,带有“entry”类的新 DOM 元素会被一个接一个地添加到末尾。我想使用类似于上面的东西来确保新附加的条目具有适当的背景颜色,这意味着它之前的任何“条目”的颜色都是相反的。

我想不出一种优雅的(或真正的)方式来做到这一点。有任何想法吗?是否有类似的东西.live()可以将此规则应用于所有当前和未来的比赛?

更新

编辑:移动更新以回答

4

4 回答 4

0

现场演示

您可以使用简单的 CSS 尝试以下操作。

.entry:nth-child(odd){
    /* do some styling */
}
于 2011-09-19T20:27:11.647 回答
0

一种方法是运行

$(".entry").filter(":odd:not(.alt)").addClass('alt');

每当您追加新元素时..

更正确的是通过 CSS 来处理

.entry:nth-child(odd){
//styling of the .alt goes here
}

这也适用于新元素..

于 2011-09-19T20:27:48.197 回答
0

每当您更新表时,您都可以调用过滤器函数。

$(document).ready(function() {
    $('tr').filter(':odd').addClass('alt');

    $('#adder').click(function() {
        $('tbody').append('<tr><td>Item 1</td><td>Item 2</td></tr>');
        $('tr').filter(':odd').addClass('alt');
    });
});

示例 JSFiddle:http: //jsfiddle.net/Gvdcv/

于 2011-09-19T20:31:06.217 回答
0

这个解决方案并不像 CSS 答案那样优雅,但它完全符合我的需要,没有任何令人分心的副作用:

首先,我将它链接在 DOM 附加的尾部:

$('#articles').append('putyourDOMelementinhere').addClass('new');

然后我有一个笨拙的条件语句来检查前一个条目是否有 'alt' 类,如果没有,我使用.addClass('alt'). 然后我通过拔掉“新”类来清理:

 if(!$('.new').prev().hasClass('alt')){
  $('.new').addClass('alt');
 }
 $('.new').removeClass('new');

我确信那里的 jQuery 大师会想出一个更性感的解决方案,但这似乎正是我的想法。

于 2012-03-14T22:15:33.710 回答