【问题标题】:Titanium Javascript: How to create dynamic eventListeners?Titanium Javascript:如何创建动态事件监听器?
【发布时间】:2012-02-12 11:43:48
【问题描述】:

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

在 eventListener 中,我想检索当前被按下的按钮的宽度值。我该怎么做?

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

【问题讨论】:

    标签: javascript arrays reference titanium addeventlistener


    【解决方案1】:

    在事件监听器内部,可以使用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]);
    }
    

    【讨论】:

    • 哪种方法最类似于 Java、C++、Objective C、Perl、Phython 中的函数格式?
    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2021-08-15
    • 2012-01-22
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多