将事件绑定到数组

时间:2015-09-23 18:43:27

标签: javascript jquery arrays

我正在使用一系列选择器:

var selectors = ['#first_name', '#last_name'];

我希望能够将focuschangekeyup等事件绑定到该数组中的每个选择器。选择器附加到表单输入。

为了绑定每个选择器,我有以下代码。

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'],这就是为什么我很困惑。

1 个答案:

答案 0 :(得分:1)

您可以使用逗号分隔的选择器,不需要循环。在控制台中触发两次的原因是同时触发多个对象,当您单击一个新输入时,它将同时触发点击和焦点事件。

$('#form').find(selectors.join()).on('change keyup click select focus', function(){
    console.log(this); //this is here for testing
});