1

私は頭の毛を引き裂こうとしています。いくつかの時間を測定しているPHP関数とやり取りしようとしています: timeSince() 投稿が投稿されました。

jQueryでこれを行うためのプラグインは必要ありません、ありがとう:o)

しかし、すべての .post-box-time div で $.get() を実行したくないので、$.each を使用しています。しかし、それは最後の要素を更新するだけですが、他のdivの結果が得られます。-> $.each(). を実行していないようです。

これが私のコードです:

setInterval(function() {
        $('.post-box-time').each(function() {
            var time = $(this).attr('data-time');
            $this = $(this);

            $.get("sys/calls.handler.php", { do: 'timeSince', data: time },
                function(data){
                    $this.html(data);
                });
        }); // each function
    }, 1000);
4

3 に答える 3

6

var宣言する前に a をスローする必要があります$this

によって実行されている各関数のスコープ内で宣言するのではなく(varが行うことです)、グローバル変数として宣言していましたeach()。したがって、応答コールバックが実際に起動されたとき、ループはすでに完了してグローバル変数を設定していました$this(またはwindow.$this) each() を介してループ中に見つかった最後の .post-box-time の値に

于 2012-08-23T18:36:59.590 に答える
2

非同期オプションを使用します。このスレッド はあなたの質問に関連しています。

これがあなたを助けることを願っています。

于 2012-08-23T18:35:56.517 に答える
-1

各関数内のこれは、生のDOM要素への参照だと思います。.each は 0 から始まるインデックスを提供するため、$('.post-box-time:eq(' + i + ')')代わりに行う必要があります。

于 2012-08-23T18:38:15.483 に答える