2012-02-12 55 views
1

我有一個按鈕的數組,我想添加一個eventListener給他們每個人。Titanium Javascript:如何創建動態事件監聽器?

在eventListener中,我想檢索當前正在按下的按鈕的寬度值。我怎樣才能做到這一點?

for (i=0; i<5; i++) { 
button[i].addEventListener(click, function(e) { 
alert(/*How should I refer to THAT button*/) 
}) 
} 

回答

5

裏面的事件監聽器,你可以使用this來指代當前按鈕:

for (var i=0; i<5; i++) { 
    button[i].addEventListener('click', function(e) { 
     alert(this); // <-- This inside the event listener = current button 
    }); 
} 

另一種方法是包裝在一個封閉的循環體,並創建一個局部變量:

for (var i=0; i<5; i++) { 
    (function(button) { // <--- Local variable 
     button.addEventListener('click', function(e) { 
      alert(button); 
     }); 
    })(button[i]);  // <-- Pass button 
} 

除了在每個循環中構造一個新函數外,還可以在循環外創建一個命名函數:

function createButtonEvent(button) { 
    button.addEventListener('click', function(e) { 
     alert(button); 
    }); 
} 
for (var i=0; i<5; i++) { 
    createButtonEvent(button[i]); 
} 
+0

哪種方法與Java,C++,Objective C,Perl,Phython中的函數格式最相似? – 2012-02-22 17:06:07