我正在使用Hammer.js库:http://hammerjs.github.io/并使用其jQuery插件。像“ panright panleft press”这样的发明很少出现,您可以调用它。我正在尝试调用cardSwipe(..)函数,但是收到一条consol错误,指出cardSwipe未定义。我不知道是什么原因造成的。
/* Initiate HammerJS on elements */
initHammer : function()
{
/* Create Hammer object for swipable game cards */
Game.$gameCard = $('.game-card-mobile');
Game.$gameCardTouch = Game.$gameCard.hammer();
Game.$gameCardTouch.on("panleft panright press", cardSwipe(ev, $(this), data));
},
cardSwipe : function(ev, element, data) {
console.log(ev.type);
console.log(element);
console.log(data);
}
编辑:添加Game.cardSwipe解决了该问题,但是现在我得到一个错误:ev未定义,其中ev是Hammer.js事件,应该被识别(如果我将函数交换为function(ev){..} )
最佳答案
这是因为cardSwipe
在该上下文中实际上是未定义的,它是父对象的一部分,并且可以通过this.cardSwipe
访问
initHammer : function() {
Game.$gameCard = $('.game-card-mobile');
Game.$gameCardTouch = Game.$gameCard.hammer();
Game.$gameCardTouch.on("panleft panright press", this.cardSwipe(ev, $(this), data));
},
cardSwipe : function(ev, element, data) {
console.log(ev.type);
console.log(element);
console.log(data);
}
看起来您正在立即调用它,而不是引用它,通常您会将其转换为这样的内容
Game.$gameCardTouch.on("events", this.cardSwipe);
或者如果您需要参数,请使用匿名函数
initHammer : function() {
var self = this;
Game.$gameCardTouch.on("panleft panright press", function() {
self.cardSwipe(ev, $(self), data);
});
},
cardSwipe : function(ev, element, data) {
}
但是我不知道
cardSwipe
真正返回什么,这应该如何工作?关于javascript - 现有功能未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29322453/