我试图通过jquery范围内的this
引用来调用函数:
var Person = function(){
this.hello = function(){
console.log("hello!");
}
this.jump = function(){
$('.jump').on('click', function(){
this.hello();
});
}
}
然后我这样做:
var p = new Person();
当我点击.jump
元素时,控制台会输出描述hello is not a function
的错误。我不确定这里发生了什么,我在假设this
试图在jquery中调用一个函数(不确定)。
所以,谷歌搜索了一下我发现Jquery.proxy()功能可能对我的情况有所帮助,但每当我试图理解它时,我的脑袋想要探索。
答案 0 :(得分:2)
试试这个,
var self = this;
this.jump = function(){
$('.jump').on('click', function(){
self.hello();
});
}
答案 1 :(得分:2)
像这样使用$.proxy()
:
var Person = function(){
this.hello = function(){
console.log("hello!");
}
this.jump = function(){
$('.jump').on(
'click',
$.proxy(
function() {
this.hello();
},
this
)
);
}
}
将this
作为第二个参数传递给$.proxy()
,将该上下文作为this
的值发送到第一个参数中定义的函数内。
答案 2 :(得分:1)
当你提到"这个"在onclick中,默认情况下,这是指在event.target
的值中找到的DOM元素$('.jump').on('click', function(event) {
this.hello() /// <<-- this == event.target =~ $('.jump')
}
所以,幸运的是,您可以使用closure
var self = this;
this.jump = function(){
$('.jump').on('click', function(){
self.hello();
});
}