2012-02-12 56 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