jquery - 在 jquery 锤子事件中触发 off() 的正确方法

标签 jquery jquery-on hammer.js

我想知道在我正在处理的简单文档上设置 Hammer.js 配置的最佳方法是什么。这是我的代码:

var tappableArea = $('.content');
var touchableArea = $('.sidebar');

function reloadHammerGestures() {
  tappableArea.hammer().off("doubletap");
  touchableArea.hammer().off("swipeleft swiperight");
  hammerGestures();
}

function hammerGestures() {
  tappableArea.hammer().off("doubletap");
  touchableArea.hammer().off("swipeleft swiperight");

  if (fullScreenMode()) {
    touchableArea.hammer().on("swipeleft swiperight", function(event) {
      alert("swiped!");
  });

  else if (!fullScreenMode()) {
    tappableArea.hammer().on("doubletap", function(event) {
      alert("tapped");
    });
  }
}

$(document).ready(function() {
 hammerGestures();
});

$(window).resize(function () {
  reloadHammerGesture();;
});

并且该函数都加载在 $(document).ready()(window).resize() 上,所以这就是我制作 .off() 在开头.. 我想知道当屏幕模式条件更改时这是禁用它的错误方法,如果您能帮助我改进此代码,我将非常高兴。

保重,祝你有美好的一天:)

最佳答案

你可以这样做:

touchableArea.hammer().off().on(...)

或者 $(touchableArea).unbind() 可能会起作用。

或者两者都做:

$('#touchableDiv, #tappableDiv').unbind()

另外:我在 github 上看到有人添加了 hammer.destroy() 方法。

另请参阅:Removing hammer events

关于jquery - 在 jquery 锤子事件中触发 off() 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17775425/

相关文章:

javascript - 如何将日期显示为选择标签(仅一周中的一天和一个月中的日期)

jquery - 在 .on() 方法事件映射中使用选择器的语法?

javascript - 如何禁用可排序容器中的垂直拖动?

javascript - HammerJS 中手势的简单示例

javascript - jQuery .on ("click") - 替代 .live()

javascript - Angular - 'Could not find HammerJS'

javascript - 使用 jquery 检查元素是否聚焦(周围有轮廓)

jquery - 左对齐 Magnific Popup - 内嵌到 DIV ID

javascript - jQuery 在列表中移动/添加 html 文本不起作用

Javascript - ('Click' ) - 错误 - 页面加载时调用