Javascript 如何在循环中声明事件处理程序?
有三个按钮。当我点击其中的任何一个按钮时,我想查看中点击按钮的数量 首先,我决定使用for循环,但我知道,它只保留最后一个值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 ( 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');
});