jQuery.fff = {
init:function(){
this.b();
},
a:function(){
console.log('a');
},
b:function(){
console.log('b');
$(document).on('click','.btn-primary',function(){
$.fff.a();
});
}
};
$(function(){
$.fff.init();
});
如上JQ代码,在执行 .btn-primary 的点击事件时,报a函数undefined,这是什么问题呢?
$.fff.a();
这时候调用fff的a(),可是这时候fff都还没成形的
b:function(){
console.log('b');
$(document).on('click','.btn-primary',(function(){
this.a();
})).apply(this, arguments);
}
或者用 JQ 自带的 Proxy 函数:
b:function(){
console.log('b');
$(document).on('click','.btn-primary',$.proxy(this,"a"));
}
参考:Jquery 的 proxy 函数
作用域问题
b:function(){
var This=this;
console.log('b');
$(document).on('click','.btn-primary',function(){
This.a();
});
}
代码并不会报错!不知道你是在什么浏览器下面测试的?chrome正常运行。