javascript
  • jquery
  • jquery-selectors
  • count
  • 2011-06-27 12 views 0 likes 
    0

    特定のクラス名の先頭にある要素を数える方法を見つけようとしています。指定されたクラスを先に数えて

    $('.active').each(function(index,item){ 
        var nextDiv = $(item).next(); 
        var followingDiv = $(nextDiv).next('a'); 
        $(item).wrap("<div id='window" + index + "'></div>"); 
        $("#window"+index).append(nextDiv).append(followingDiv); 
    }); 
    

    これはすべての権利働き、それだけ先に、この場合に'.active'あると'window'と呼ばれるdivでそれらをラップアクティブな項目の'a'タグです2つの要素をつかむ:私は、次があります。

    私は、アクティブクラスの先頭に2つ以上の要素を追加して、変数に10個の変数を作成するのではなく、それを変数に格納することをお勧めします。.next('a').next('a') etc...その後、以下のように:

    $("#window"+index).append(nextDiv).append(followingDiv).append(another-a).append(another-a-again) ...

    私は、変数の多くを再作成することなく、要素の特定のクラス名の先頭の指定された数をカウントする簡単な方法があるはずと信じています。

    +0

    .active前に持っているかもしれません

    $('.active').each(function(index, item) { $(this).prevAll().each(function(prevIndex, prevItem) { if (prevIndex < 10) { // ... do something with prevItem } }); }); 

    あなたは、おそらくのような何かを行うことができます。 http://www.jsfiddle.netでデモをすることはできますか? – Neal

    答えて

    1

    私はあなたが.nextAll()[docs]をしたいと思う:

    は、必要に応じて、セレクタによってフィルタリング、マッチした要素の集合の各要素のすべての次の兄弟を取得します。

    var as = $(this).nextAll('a'); 
    

    更新:最大の制限を忘れました。あなたはそのための.slice()[docs]を使用することができます。

    var as = $(this).nextAll('a').slice(0,10); 
    

    あなたの全体のコードは次のようになります。あなたは彼らの次のリンクを持つすべての.activeの要素をグループにしたい場合は

    $('.active').each(function(index,item){ 
        $(this).nextAll('a').slice(0,10) 
         .add(this) 
         .wrap("<div id='window" + index + "'></div>"); 
    }); 
    

    たぶんnextUntil[docs]もあなたのために興味深いものです。

    0

    prevAll(または「先読み」の意味に応じてnextAll)をご覧ください。あなたは私はあなたがここで何をしているか本当にわからない(例えば)の要素を取得する順序を逆にすぐに

    関連する問題