2012-04-21 126 views
0

我想了解從函數返回jquery中的值的正確方法。我已經檢查了API以及其他問題,我無法找到正確的方法來做到這一點。我只想要一個簡單的變量來返回,所以我可以將它設置爲一個全局變量。這是我得到的:jquery從函數返回?

var a = 0, b, c; 
var imgArr = []; 

    $(document).ready(function() { //populates array with images 

     var smooth = popArr(); 
     alert(smooth); 
    } 

function popArr(){ 
     $("#thumb_slider").children().each(function(index, element) { 
      var newImg = $("<img />").attr({ 
       src: this.src, 
       alt: 'space' 
      }).addClass(index == 0 ? "left_slot" : (index == 1 ? "middle_slot" : "right_slot")); 
      imgArr.push(newImg); 
      return imgArr;    // This comes back as undefined. 

     }); 
    } 

我的問題是爲什麼它返回undefined?我甚至應該在JQuery中使用「返回」?

回答

5

您嘗試從.each回調中返回某些內容。這個函數唯一有用的返回值是false以儘早取消「循環」。

只需在});之後移動您的退貨聲明,一切都應該正常工作。

您也可避免全局變量 - 返回數組所以沒有必要讓全球:

function popArr() { 
    var imgArr = []; 
    $("#thumb_slider").children().each(function (index, element) { 
     var newImg = $("<img />").attr({ 
      src: this.src, 
      alt: 'space' 
     }).addClass(index == 0 ? "left_slot" : (index == 1 ? "middle_slot" : "right_slot")); 
     imgArr.push(newImg); 
    }); 
    return imgArr; 
} 
+0

謝謝。這真的很有幫助。不能相信我就是那麼接近。 – 2012-04-21 20:00:31

0

方法popArr()不返回任何東西。相反,它調用.each()

因爲它是一個全局變量,只是將元素放入它就足夠了。