Titanium Javascript:如何创建动态eventListeners?

Joh*_*Tan 1 javascript arrays reference addeventlistener titanium

我有一个按钮数组,我想为每个按钮添加一个eventListener.

在eventListener中,我想检索当前正在按下的按钮的宽度值.我怎样才能做到这一点?

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

Rob*_*b W 5

在事件监听器内部,您可以使用它this来引用当前按钮:

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

另一种方法是将循环的主体包装在闭包中,并创建一个局部变量:

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

您也可以在循环外创建一个命名函数,而不是在每个循环中构造一个新函数:

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