我正在使用一系列选择器:
var selectors = ['#first_name', '#last_name'];
我希望能够将focus
,change
,keyup
等事件绑定到该数组中的每个选择器。选择器附加到表单输入。
为了绑定每个选择器,我有以下代码。
for(var selector in selectors){
$('#form').find(selectors[selector]).on('change keyup click select focus', function(){
console.log(selectors[selector]); //this is here for testing
});
}
这应该在逻辑上有效,但是当我读取控制台日志时,它会显示#last_name
两次。
我一遍又一遍地检查了表单,它与表单无关。我的代码中唯一的问题是我提供的这种单一逻辑结构。如果我在循环之前控制台对数组进行日志记录,它会将数组显示为['#first_name', '#last_name']
,这就是为什么我很困惑。
答案 0 :(得分:1)
您可以使用逗号分隔的选择器,不需要循环。在控制台中触发两次的原因是同时触发多个对象,当您单击一个新输入时,它将同时触发点击和焦点事件。
$('#form').find(selectors.join()).on('change keyup click select focus', function(){
console.log(this); //this is here for testing
});