2011-10-13 16 views
8

'.each loop'の内側から配列を作成し、ループの外側で使用するにはどうすればよいですか?jQueryで.eachループから配列を作成する方法

マイ.each loop

 // Loop through all but button with class .apply 
     $('.profile-nav ul li a').not('.apply').each(function() { 

      // if currently loop through element has .cur class 
      if($(this).hasClass('cur')) { 


       //Get the first class of the match element     
       var ClassesToApply = $(this).prop('class').split(' ')[0]; 

      } 
      //How can I create an array from all ClassesToApply? 


      //var arr = jQuery.makeArray(ClassesToApply); 
      // This will create an array, but with one element only 

     }); 

どのように私はすべてのvar = ClassesToApplyから配列を作成することができますか?

この配列ではどうすればいいですか? 例えば

$(allClasses from an array as a selectors).doStuff();

+0

あなたは文字列の配列を取得します。あなたはそのような配列で何をしたいですか? jQueryメソッドは、文字列ではなくDOM要素を含む配列に対して実行されます。 –

+0

異なるdivのSAMEクラスを持つ要素を表示/非表示するためのセレクタとしてstringを使用したいと考えています。フィルタリング - の並べ替え。 – Iladarsda

答えて

21

あなたがeachの外で変数を宣言した場合、それは内部にアクセスできるようになりますeach

var yourArray = []; 
$('.profile-nav ul li a').not('.apply').each(function() { 
    if($(this).hasClass('cur')) { 
     yourArray.push($(this).prop('class').split(' ')[0]); 
    } 
}); 
//Here, yourArray will contain the strings you require. 

他人が示されているように、大幅にあなたのコードを短くする方法があるが、 。

あなたが行うことができ
0
var list = $(".profile-nav ul li a.cur:not(.apply)"); 

list.each(function(){ 
    // do your thing! 
}); 
6

var arr = $('a.cur:not(.apply)', '.profile-nav').map(function() { 
    return $(this).prop('class').split(' ')[0]; 
}).get(); 
+0

すばらしい例!前に '.map'を使ったことはありませんでした。私はそれを調べる必要があります。 – Iladarsda

+0

OPが必要な場合は、 '.map()'の後に '.get()'や '.toArray()'を連想させることを忘れないでください。 – user113716

+1

@Ӫ_._Ӫ忘れてしまった、ありがとう。 –

13
fxnReqValidation = function() { 
     var InputTagArray = new Array; 
     InputTagArray = document.getElementsByTagName("input"); 
     for (var iCnt = 1; iCnt <= InputTagArray.length; iCnt++) { 
      if ((g_Json[InputTagArray[iCnt].name].required == true) && (InputTagArray[iCnt].value == "")) { 
       $("#errormsg").text("please enter all required fields"); 
      } 
      return false; 
     } 
    } 
関連する問題