2012-08-23 79 views
1

我即將撕開我的頭髮。我正在嘗試與我的PHP函數進行交互,該函數正在測量一些時間:timeSince()發佈了一篇文章。

我不需要插件jQuery中這樣做,謝謝:O)

但我wan't運行在所有。員額盒時格是如此。我就是$獲得()使用$ .each。但它只是更新最後一個元素,而是讓其他div的結果給我。 - >這就像它沒有做。每個$()..

這裏是我的代碼:

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); 
+0

如果您打開控制檯,您是否看到多個傳出請求? (與.post-box-time的數量相同的數量? –

+0

有兩個.post-box-time,並且他們兩個都被解僱了我看到了。 – skolind

+0

你的代碼看起來應該可以工作 –

回答

6

那麼你應該在宣佈$this之前拋出var

你聲明它是一個全局變量,而不是在範圍內聲明它(這是什麼變量),而是通過each()運行的每個函數。所以當你的響應回調實際上被解除時,你的循環已經完成並將全局變量$this(或window.$this)設置爲最後的.post-box-time的值,並通過每個循環來發現()

+0

This works,cool!怎麼可能? – skolind

+2

@Kolind沒有'var', '$ this'被聲明爲全局變量,而不是局部變量。http://stackoverflow.com/q/1470488/ –

+0

@JonathanLonowski太棒了。非常感謝:) :)令人驚訝的是,'var'可以將整個函數轉換爲工作。我喜歡編程:) – skolind

2

使用async選項。這個Thread與你的問題有關。

希望這會幫助你。

-1

我認爲這是每個函數內部對原始DOM元素的引用。 .each給出的索引從0開始,所以你應該改爲$('.post-box-time:eq(' + i + ')')