javascript对象到jquery选择器

时间:2015-09-09 13:16:25

标签: javascript jquery

我正在为表单编写代码,因为有很多表单需要简化掩盖表单中字段的方式。因为我创建了一个封装字段ID并为每个字段分配特定交互的类。 / p>

我有代码:

var Mask=(function() {

var me=this;    

var eventInterator;
var func; 
var fields;

function Mask(fd,ev,fn){

  this.setFunction(fd);
  this.setFunction(fn);
  this.setEvent(ev);
  this.execute();
}

Mask.prototype.setFields = function(fd){

   fields=fd;

}

Mask.prototype.setFunction= function(fn){

    func=fn;    

}

Mask.prototype.setEvent= function (ev){

    eventInterator=ev;      

}

Mask.prototype.execute = function(){

    for (var i=0;i<fields.length;i++){
        loadEvent(fields[i]);       
    }

}   

function loadEvent(field){

    $(me+' '+field).on(eventInterator,function() {  

            func();
    });

}

return Mask;

})();

当我运行以下代码时:

 function doSomeThing(){
   alert("hi");

 }
var fields = ['#field1','#field2','#field3','#field4'];

var mask = new Mask(fields,"keyup",doSomeThing);

我收到错误:语法错误,无法识别的表达式:[对象窗口]

如何为jquery选择器设置javascript类的对象?

1 个答案:

答案 0 :(得分:3)

有2个问题

首先this.setFunction(fd);应为this.setFields(fd);


Mask函数中,me引用window对象,因为它是一个对象me + ' ' + field将返回[object Window] #field1,这就是你得到错误的原因

所以将$(me+' '+field)更改为$(field)

同样正如@plalx所说,你使用局部变量是没用的,因为Mask的每个实例都会覆盖以前的值