2011-12-27 4 views
1

boxという名前のdivが3つのクラスを含んでいます。 boxにある同じクラスのいずれかを共有するチェックボックスを格納するrelatedBoxesという名前の変数を作成したいとします。クラスを分割し、別のDIVと照合します。 JQuery

私はクラスを分割して、という名前の変数に格納しています。

に保存されているクラスが:checkboxに含まれているかどうかを確認するメソッドが必要になりました。私は変数relatedBoxesを作成してみましたが、これはうまくいきません。

マークアップ:

<div id="box" class="marker blue large"> 

はJavaScript:

var c = $('#box').attr('class'); 
var splitClass = c.split(' '); 

var relatedBoxes = $(':checkbox').hasClass(splitClass); 

おかげでたくさんの男

答えて

4

hasClassはクラス名が1つしかないと予想していますが、今は配列を渡しています。私はそれが好き

var relatedBoxes = $(':checkbox').filter('.' + splitClass.join(',.')); 
+1

+1:あなたは、blueまたはlarge、のようなものですべての要素を見つけるためにしようとしている場合。 filter( '。' + splitClass.join( '、。')) 'と入力します。 –

+1

@FelixKling - ちょうどそれをしていた:) –

+0

これは、それをテストするために私にしばらくお待ちください。うまくいけば、それらのクラスのいずれかと一致するすべてのチェックボックスを保存します!しかし、お返事ありがとう! –

0

あなたは.filter()[docs]を使用して、要素のクラスを反復処理することができます。

var splitClass = $('#box').attr('class').split(' '); 

var relatedBoxes = $('input[type="checkbox"]').filter(function() { 
    for(var i = 0, len = splitClass.length; i < len; i++) { 
     if($(this).hasClass(splitClass[i])) return true; 
    } 
    return false; 
});