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、「ループ」を早期にキャンセルすることです。

return ステートメントを の後に移動するだけで});、すべてが正常に機能するはずです。

グローバル変数を避けることもできます - 配列を返すので、グローバルにする必要はありません:

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 に答える