1

我试图了解从函数返回 jquery 值的正确方法。我在这里检查了 API 以及其他问题,但找不到正确的方法。我想要的只是一个要返回的简单变量,因此我可以将其设置为全局变量。这是我得到的:

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.

        });
    }

我的问题是为什么它返回未定义?我什至应该在 Jquery 中使用“return”吗?

4

2 回答 2

7

你尝试从.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;
}
于 2012-04-21T19:46:05.550 回答
0

该方法popArr()没有返回任何东西。相反,它正在调用.each()

因为它是一个全局变量,只需将元素推入其中就足够了。

于 2012-04-21T19:47:22.477 回答