【发布时间】:2016-09-30 18:00:03
【问题描述】:
我正在尝试通过回调函数启用一些触摸控件,但在我的回调函数中访问事件和 $(this) 时遇到问题。现在代码如下:
$('.img-responsive').each(touchControls);
function touchControls(event) {
event.preventDefault();
var mc = new Hammer(this);
mc.on("doubletap", function() {
console.log($(this));
});
}
“.img-responsive”是我页面上的一类图像。
当它尝试调用 event.preventDefault 时,我收到一个错误,即 event.preventDefault 不是函数。我以为事件会自动传递给调用的变量?我知道当我使用 .on 执行命名回调函数时,event.preventDefault() 工作得非常好。我认为使用 .each 时会有所不同,如何正确访问它?
现在,如果我删除 event.preventDefault() 行,当它记录 $(this) 时,我会得到一个函数。我期待获得单独的元素,这样我就可以为它们设置触摸控制,但这显然行不通。我试图通过以下方式绑定“this”:
$('.img-responsive').each(touchControls).bind(this);
但是当我记录 $(this) 时,它仍然是一个函数,而不是我所期望的元素。
我基本上只是对如何在定义的回调函数中访问 $(this) 和事件感到困惑。
【问题讨论】:
标签: javascript jquery callback hammer.js