2016-05-13 169 views
1

我想不必編寫額外的函數來填充areas_of_interest變量,我可以這樣做嗎?返回一個函數內的對象

function prepareResults() { 

    var area_of_interest = $('.checkboxes-wr').find("li"); 

    if (area_of_interest.length) { 

     $.each(area_of_interest, function(x){ 

      results.items[x] = { 
       'id' : $(this).attr("id"), 
       'title' : $(this).find("h6").text().trim(), 
       'areas_of_interest' : function() { 
        return {'test' : 'test'}; 
       }, 
       'potential_treatments' : {} 
      } 


     }); 

    } 

} 
+1

這取決於你需要做什麼功能。在這種情況下,您可以簡單地將函數存儲在'$ .each'之外的變量中(或者甚至在'populateResults'之外),並在結果對象中引用該變量。但是,如果您需要在函數內部使用特定的變量值(即a * closure *),那麼您需要在適當的位置聲明它的函數。 –

+0

我需要訪問在循環過程中定義的「x」變量,不知道該怎麼辦 – user990717

+0

我需要構建一個對象,該對象將綁定到感興趣的區域,該對象將具有在其循環的li下的所有複選框 – user990717

回答

0

這工作:

功能prepareResults(){

var area_of_interest = $('.checkboxes-wr').find("li"); 

    if (area_of_interest.length) { 

     $.each(area_of_interest, function(x){ 

      var interests = function(x) { 
       return {'test' : x} 
      } 

      results.items[x] = { 
       'id' : $(this).attr("id"), 
       'title' : $(this).find("h6").text().trim(), 
       'areas_of_interest' : interests(x), 
       'potential_treatments' : {} 
      } 


     }); 

    } 

} 

感謝大家誰在上面的評論幫助。