2012-09-19

LimeJS 在迴圈的 callback 裡傳值

這問題不會只發生在 LimeJS 上,只是 LimeJS 需要多一點的處理。

先看看標準的錯誤方式。
for (...) {
 var fKey = ...;
 var friend = new lime.Sprite()...; 
 $(friend.getDeepestDomElement()).click(function(){
  // 會得到很怪的 fKey
  // 所有的 click 都會得到同一個 fKey
  // 通常應該是迴圈中最後一個物件的 fKey
  alert(fKey);
 });
}
再來就是正確的方式。
for (...) {
 var fKey = ...;
 var friend = new lime.Sprite()...; 
 // friend 本身不是 Dom 物件,不能用來藏值
 $(friend.getDeepestDomElement()).attr('fKey', fKey);
 $(friend.getDeepestDomElement()).click(function(){
  // 在迴圈的 callback 裡讀值,一定得透過 this
  var fKey = $(this).attr('fKey');
  alert(fKey);
 });
}
---

沒有留言:

張貼留言