2012-05-04 20 views
0

アレイセレクタを使用して複数の要素を選択できますか?jQuery:配列セレクタを使用して複数の要素を選択する方法はありますか?

もしそうなら、どうすればよいでしょうか?私のプロジェクトでは、配列セレクタだけを使う必要があります。

これは私のサンプルコードです:

<ul> 
    <li>1<li> 
    <li>2<li> 
    <li>3<li> 
    <li>4<li> 
    <li>5<li> 
</ul> 
<a href="#">select</a>​ 

$('a').click(function(){ 
    var element = $('ul').find('li')[0]; // Instead is it possible $('ul').find('li')[0,3,4]? I know we can select finding each alone. But is there any shortcut? 
    $(element).css({border:'1px solid red'}); 
})​ 
+0

いいえ(...........) – Matt

+2

ちょっとしたメモ:0ベースのインデックスなので、[0,3,5]の5は6つの要素があることを意味します5の代わりに – sp00m

+0

$( '。classname') –

答えて

7

これは望ましい結果を与えるだろう。単にindex()でフィルタし、inArray()を使用してください。

var arr = [0, 3, 5]; 
$('ul li').each(function() { 
    if ($.inArray($(this).index(), arr) < 0) 
     return; 
    // Code here! 
    $(this).css('border', '1px solid red'); 
}); 

Basicly全て<li>各()を介して実行され、その後、Iはループ(与えられた場合.INDEXをチェックするために)指定された配列です。それらが存在しない場合($ .inArray()== -1)、私はリターンを行います。実行をスキップします。

0

多分これが動作します(ただし、パフォーマンスにあまりよくない):

$('ul li:nth-child(0),ul li:nth-child(2)'); 

またはこの:

$('ul li:eq(0),ul li:eq(2)'); 
0

あなたはまた、

arr = "013".split(""); 
arr.forEach(function(a,b){ 
    var element = $('li')[a]; 
    console.log(element); 
    $(element).css({border:'1px solid red'}); 
}); 

を配列のforEachのを使用することができます。ここFiddleです

0

ループここで

$('a').click(function() { 
    var element = $('ul').children('li'); 
    var count = 0; 
    for (x in element) { 
     count++; 
     if ((count == 0) || (count == 3) || (count == 5)) 
      x.css({ border: '1px solid red' }); 
    } 
}); 
1

はそれを行うためのセクシーな方法です:JavaScriptのArrayオブジェクトにカスタムメソッドを追加し、別の答えで提案されているように。

Array.prototype.filter = function(indexes) { 
    var array = new Array(); 
    for(var i=0; i<indexes.length; i++) { 
     array.push(this[indexes[i]]); 
    } 
    return array; 
}; 

それを呼び出すには:

$('ul').find('li').filter([0,3,4]).anything(); 

あなたは:)

1

一つの選択肢はfilterを使用することです望んだとしてカスタム汎用のショートカット。 $.inArrayindex()を使用しても

var indexArray = [1,3,4]; 
$('ul li').filter(function(index) { 
    return jQuery.inArray($(this).index(), indexArray) > -1; 
}); 

。 ビューdemo

関連する問題