2011-10-13 65 views
8

Làm cách nào để tạo một mảng từ bên trong vòng lặp '.each' và sử dụng nó bên ngoài vòng lặp?Cách tạo một mảng từ vòng lặp .each với jQuery

.each loop của tôi:

 // 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 

     }); 

Làm thế nào tôi có thể tạo một mảng từ tất cả var = ClassesToApply?

Và cách tôi có thể làm điều gì đó với mảng này? ví dụ

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

+0

Bạn sẽ nhận được một mảng các chuỗi. Bạn muốn làm gì với một mảng như vậy? Các phương thức jQuery được thực hiện trên các mảng chứa các phần tử DOM, không phải các chuỗi. –

+0

Tôi đang tìm cách sử dụng chuỗi làm công cụ chọn để hiển thị/ẩn phần tử với các lớp THE SAME trong div khác nhau. Lọc - sắp xếp. – Iladarsda

Trả lời

21

Nếu bạn khai báo một biến bên ngoài của each, nó sẽ có thể truy cập bên trong 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. 

Mặc dù như những người khác đã cho thấy, có nhiều cách để rút ngắn mã của bạn đáng kể .

0
var list = $(".profile-nav ul li a.cur:not(.apply)"); 

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

Bạn có thể làm:

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

Ví dụ tuyệt vời! Tôi chưa bao giờ sử dụng '.map' trước đây, tôi cần phải nhìn vào nó. – Iladarsda

+0

Nếu OP muốn là một mảng, đừng quên chuỗi '.get()' hoặc '.toArray()' sau '.map()'. – user113716

+1

@ Ӫ _._ Ӫ Quên về điều đó, cảm ơn. –

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; 
     } 
    } 
Các vấn đề liên quan