将事件侦听器附加到FOR循环内的对象

时间:2014-03-07 19:50:18

标签: javascript javascript-events

我正试图想出一种附加事件监听器的方法。

我有以下变量:

var inputs = data.context.find(':input').not(':button');

然后,在代码中,我有一个FOR循环,我用它在一些字段中添加一个css类:

inputs[i].className += " invalidEntry";

工作正常。

我想要做的是将事件处理程序附加到那些相同的字段,以便在更改字段中的值时删除css类名。

那么,如何在FOR循环期间将事件监听器附加到输入[i]?

1 个答案:

答案 0 :(得分:1)

像这样添加:

function change(){
    // this refers to the element that had the keypress event fired on it.
    this.className=this.className.replace(" invalidEntry","");
}
for(var i=0;i<inputs.length;i++){
    inputs[i].className += " invalidEntry";
    inputs[i].addEventListener('keypress',change);
}

change函数只需要定义一次,并且一次又一次地使用,因为this关键字将引用元素keypress ed,因此它始终是input s。