gpt4 book ai didi

javascript - 现有函数未定义

转载 作者:行者123 更新时间:2023-11-28 15:25:11 24 4
gpt4 key购买 nike

我正在使用hammer.js库:http://hammerjs.github.io/并使用它的 jQuery 插件。很少有像“panright panleft press”这样的事件发生时您可以调用函数。我试图调用 cardSwipe(..) 函数,但是收到一个控制台错误,指出 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com