javascript 对象到 jquery 选择器

标签 javascript jquery

我正在为表单编写代码,因为有很多表单需要简化屏蔽表单中字段的方法。因为我创建了一个类来封装字段的 id 并为每个字段分配特定的交互。

我有代码:

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 类的对象?

最佳答案

有2个问题

第一个 this.setFunction(fd); 应该是 this.setFields(fd);

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

因此将 $(me+' '+field) 更改为 $(field)

<小时/>

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

关于javascript 对象到 jquery 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32480638/

相关文章:

javascript - 将较小的对象传递给函数是否可以更好地提高性能

javascript - 我可以在 Angular 中使用全局常量而不注入(inject) Controller 吗?

javascript - 在 URL 中使用 # 标签来保存来自 Javascript 的数据

javascript - 如何处理 Angular 2中的查询参数

javascript - 如何使用 jQuery 在页面加载时找到选定的单选按钮?

javascript - 检测 HTML 元素上的类无法正常工作

javascript - JavaScript 不执行

javascript - 如何在 Bootstrap 中的提交按钮上设置回调函数?

javascript - 迭代选择的 DOM 元素

jquery - 我还应该在 1.4.2 中使用 jquery .getJson 吗?