2012-01-26 30 views
2

要素の選択をループする必要があり、選択範囲の最初または最後ではないすべての要素に対して処理を行う必要があります。私は問題を動作するように私のセレクタを取得して抱えている要素が選択範囲の最初または最後でない場合、jqueryでチェックする方法は?

var set = $('.someElements') 
    setLen = set.length; 

if (setLen > 2) { 
    set.not(setLen.first(), setLen.last()).addClass('someClass') 
    } 

を誰かが「真ん中の要素」を選択するのが正しい道に私を指すことができますか?

ありがとうございます!

答えて

3

あなただけの始まりとセットの末尾から要素を削除すると、あなたは、単にすることができます.slice[docs]

set.slice(1, -1).addClass('someClass') 
+0

実際に私はこの1つが自分のバージョンよりも優れているのが好きです。シンプリシティは王様です... –

+0

+1はい@FlorianRachorに同意します! – JohnJohnGa

+0

これは最適です。ありがとう! – frequent

0

あなたはこのためにそれぞれ使用することができます。

$('.elements').each(function(index) { 
if(index != 0 && index < $('.elements').length) alert('Middle Element'); 
}); 
1

試してみてください。

var set = set.filter(':not(:first)').filter(':not(:last)'); 
+0

これは良いと思います – frequent

0
var len = $('.someElements').length;  
$('.someElements').each(function(index){ 
     if(len > 2){ 
      if(index != 0 && index != len - 1){ 
       $(this).addClass('someClass'); 
      } 
     } 
    }); 
関連する問題