[英]javascript object to jquery selector
我正在為表單編寫代碼,因為很多表單都需要簡化掩蓋表單中字段的方式,因為我做了一個封裝字段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類的對象?
有兩個問題
首先this.setFunction(fd);
應該是this.setFields(fd);
第二
在您的Mask
函數中, me
指的是window
對象,因為它是一個對象,所以me + ' ' + field
將返回[object Window] #field1
,這就是您遇到錯誤的原因。
因此將$(me+' '+field)
更改$(field)
就像@plalx所說的那樣,您對局部變量的使用是無用的,因為每個Mask
實例都會覆蓋以前的值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.