Javascript 如何在循环中声明事件处理程序?

Javascript 如何在循环中声明事件处理程序?,javascript,jquery,Javascript,Jquery,有三个按钮。当我点击其中的任何一个按钮时,我想查看中点击按钮的数量 首先,我决定使用for循环,但我知道,它只保留最后一个值 for ( var i = 0; i< 3; i++ ) { $('button:eq(' + i + ')').click(function() { $('span').append(i + 'button was clicked'); }); } 也许,$。每个函数都会对我有所帮助?您不需要循环。您可以使用.index 声明多个

有三个按钮。当我点击其中的任何一个按钮时,我想查看中点击按钮的数量

首先,我决定使用for循环,但我知道,它只保留最后一个值

for ( var i = 0; i< 3; i++ ) {
    $('button:eq(' + i + ')').click(function() {
        $('span').append(i + 'button was clicked');
    });
}

也许,$。每个函数都会对我有所帮助?

您不需要循环。您可以使用.index


声明多个事件处理程序不是一个好主意,因为您可以有一个事件处理程序,并且可以根据执行它的元素来处理它。上下文提供了足够的信息供您使用。如果您使用一个工具来验证代码,比如,您会发现它建议不要在循环中声明函数

您不需要循环,只需绑定处理程序并使用.index返回所选按钮的索引即可

$('button').click(function() {
    $('span').append($(this).index() + 'button was clicked');
});

演示:

虽然答案为您提供了替代/更好的方法来完成您所寻找的任务,但您需要

检查这把小提琴:

试试这个:

 $('button').click(function(){
        $('span').append(($(this).index()+1)  + 'button was clicked'); 
    });
演示:

$('button').click(function() {
    $('span').append($(this).index() + 'button was clicked');
});
for (var i = 0; i < 3; i++) {
    (function (i) {
        $('button:eq(' + i + ')').click(function () {
            $('span').append((i + 1) + 'button was clicked');
        });
    }(i));
}
 $('button').click(function(){
        $('span').append(($(this).index()+1)  + 'button was clicked'); 
    });