2011-12-05 12 views
3

を他の取得やアイテムのすべてのクラス:私は次のようにセレクタの谷を歩くHTML考える

<div id="carrousel-wrapper"> 
    <div class="region region-carousel-1"> 
    .... 
    </div> 
    <div class="region region-carousel-2"> 
    .... 
    </div> 
</div> 

var wrapper = $('#carousel-wrapper .region'); 
    if(wrapper.length) { 
    $(wrapper).each(function(i) { 
     var regionClass = 'region-carousel-' + (i + 1); 

をしかし、私はregionClassを見つけるためのクリーンな方法をしたいです。現在の方法は、例えば.region-carousel-1は存在しません。

.carrousel-wrapper .regionの「追加の」サブクラスを取得するにはどうすればよいですか?

+1

はたぶん(ロリーさん以外の)よりよい解決策があります。なぜあなたはクラスを見つける必要がありますか?あなたはそれで何をしていますか? – RoToRa

+0

もっと良い解決策があると確信していますが、あいにくそうするためには、既存の競争相手や機能をかなり書き直す(さらには移行する)必要があります。私はリファクタリングを計画しています。これにはa.o.これをはるかに単純な方法で解決します。 – berkes

答えて

2

each()メソッド内では、thisキーワードを使用して現在の要素を参照できます。また、each()メソッドは要素が提供されていないとエラーをスローしないので、if (wrapper.length)のチェックは冗長です。最後に、wrapper変数をjQueryオブジェクトにダブルラップします。心の中ですべてのことで

、以下のあなたのために働く必要があります:あなたが戻って一歩を踏み出すと大きな画像を説明する場合

var wrapper = $('#carousel-wrapper .region'); 
wrapper.each(function(i) { 
    var regionClass = $(this).attr("class"); 
}); 
+0

あなたの例では、regionClassは文字列 '.region region-carousel-1'です。しかし、私はその部分を「地域カルーセル-1」にしたい。明らかに、私はその抽出物をpreg-matchすることができますが、よりクリーンな方法はありませんか? – berkes

+1

残念ながら、 'region-carousel-x'を得るための正規表現はかなり簡単です。 –