现有函数未定义
existing function is undefined
我正在使用一个hammer.js库:http://hammerjs.github.io/并使用其jQuery插件。很少有像"左右按"这样的ivent可以在出现时调用函数。我正在尝试调用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事件,应该被识别(如果我将函数交换为函数(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
到底返回了什么,以及它应该如何工作?
在代码中,cardSwipe
函数是某个对象的属性。您必须使用该对象引用,如:
obj.cardSwipe(...)
以便调用它-其中obj
是包含该属性的对象。
我不知道你的代码的整个上下文,但似乎合适的参考可能是:
this.cardSwipe(...);
因为您是从同一对象的方法调用它的。
与其他一些语言不同,当前对象上的方法不会自动进入作用域。必须使用this
引用当前对象才能访问当前对象上的属性或调用方法。
此外,看起来您正在尝试设置一个事件处理程序。在这种情况下,您不希望立即调用cardSwipe()
,而是传递一个函数引用,并且您需要将this
的值保存到本地,以便在回调中引用它:
initHammer : function() {
var self = this;
Game.$gameCard = $('.game-card-mobile');
Game.$gameCardTouch = Game.$gameCard.hammer();
Game.$gameCardTouch.on("panleft panright press", function() {
self.cardSwipe(ev, $(self), data));
});
},
相关文章:
- Jquery未定义函数正在停止其他操作
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- Uncaught ReferenceError:尝试在Android网络视图中访问时未定义函数
- jQuery文件上传和验证未定义函数
- 引用错误:未定义函数-Firefox
- res.render中出错,未定义函数
- 神秘的未定义函数
- 尝试使用函数和Ajax修改值时未定义函数
- 引用错误:未定义函数
- ReferenceError:未定义函数
- 在 Angular JS 中使用 ng-include 的未定义函数
- 未捕获的引用错误:未定义函数
- j查询工具提示引发错误:未定义函数
- 未捕获的引用错误: 未定义单击世界 -- 未定义函数
- JS:引用错误:未定义函数
- 茉莉花未定义函数
- Javascript 错误:未捕获的引用错误:未定义 [函数]
- 未定义函数
- 尽管 js 文件引用在标头中,但未定义函数
- Javascript 未定义函数错误