2

私は使用しています

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

$(document).ready()クラス「エントリ」を使用してすべてのゼブラストライプを容易にします 。

ページと対話する過程で、クラス「エントリ」を持つ新しい DOM 要素が最後に 1 つずつ追加されます。上記に似たものを使用して、新しく追加されたエントリが適切な背景色、つまり前の「エントリ」とは反対の色であることを確認したいと思います。

これを行うエレガントな(または実際には)方法は考えられません。何か案は?.live()このルールを現在および将来のすべての試合に適用する類似のものはありますか?

アップデート

編集:更新を回答に移動

4

4 に答える 4

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 に答える
0

ライブデモ

シンプルな CSS だけで次のことを試すことができます。

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

1つの方法は実行することです

$(".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 に答える