2
我有以下的jQuery代碼:
$content.each(function(i) {
$body = $(this);
$(this).find('div.field-content')
.animate(
{
'top': 0
},
{
duration: 500,
complete: function() {
$(this).css('top', 0);
setBodyGradient($body);
}
}
);
});
在我的情況$content
有5個項目。問題似乎是,在最後一次迭代中,$content.eq(0)
的動畫完成回調尚未觸發,並且當它發生時,最新版本的$body
發送到setBodyGradient
5次,而不是$body
的版本回調已創建。
我應該說我在Drupal上運行JQuery 1.4.4,所以也許這是在最新的JQuery中修復的錯誤還是它的一個特性?
我知道我可以通過使用$content.eq(i)
而不是避開它,不過我很好奇,想知道這是否是設計或錯誤行爲,什麼推薦的方法是什麼?我是否應該始終使用$content.eq(i)
?
哦,是的,謝謝有道理,它總是基本的東西,讓我:) – DanH 2012-08-09 13:04:17
我不會說這是基本的東西,但很高興我可以幫助。看看http://stackoverflow.com/questions/500431/javascript-variable-scope更好的理解。 – 2012-08-09 13:10:31