2011-06-20 8 views
2

特定の場所のul #colorlistにli項目を追加する必要があります。だから、15番目のli項目が1クラスになり、16番目が別のクラスになります(15番目は前後に反転する必要があり、16番目は1番目の行です)。これはこれで十分に簡単です:隠されたli要素を移動する

$('#colorlist li:nth-child(15n+1)').addClass('first-column'); 

は、私は、その後のli項目と、問題を隠し様々なフィルタを持っているが、その後の隠れものはまだカウントされていることをしています。私はこれが正しいアプローチかもしれないと思うが、ここではたくさんのことがわからない。ここでの考え方は、合計数を15で割った値が整数であるかどうかをテストすることです。それが私のクラスを適用するとします。

$("#colorlist li").each(function(){ 
    if($("#colorlist li:visible").size() % 15 == ???)$(this).addClass('first-column'); 
    }); 

数字をテストする方法や、15番目のアイテムごとにどのように使用するかはわかりません。あなたが見ることができるように私は一種の失われた!どんな助けでも大歓迎です。

+0

? 'display:none'を使うと、カウントされません。 –

+0

jqueryのshowコマンドとhideコマンドを使用しています。火かき棒によると、 "hide"はそれらにディスプレイを与えます:n番目の子供はまだそれらを数えます。 – hmon

答えて

3

私はあなたが望むかもしれないと思う:

$("#colorlist li:visible") 
    .filter(function(i){ return i % 15 === 0;}) 
    .addClass('first-column'); 

これが唯一のアカウントに見える要素を取って位置を計算します。

DEMO

+1

+1は、 'return!(i%15)'でさらに少数のキャラクターをカットすることができました – Niklas

+0

これは多くのおかげでうまくいきました。私のような他のランクの初心者の方には、これを読んでください - 私はそれを(i + 1)%15 === 0に変更して、最初の授業を取り除き、15時間ごとに視覚的にそれを作ります。 – hmon

+0

@hmon:最初のコード例の ':nth-​​child(15n + 1)'も最初の要素を選択するので、私はそれについてはわかりませんでした。しかし、とにかく:)あなたは 'i%15 === 14'を行うこともできます。 –

0

問題は、あなたがjQuery.eachにすべてのli要素を渡すことかもしれません。試してみてください:ここ

$("#colorlist li:visible").each(function(i, elem){ 
    var $el = $(this); 
    //If is 0 add class 
    if(i % 15 === 0){ 
     $el.addClass('first-column'); 
    } 
}); 

デモ:あなたは `li`要素が非表示にはどうすればよいhttp://jsfiddle.net/tomgrohl/473ky/

+0

ありがとう - これは私のためにも働いた – hmon

関連する問題