在jquery锤子事件中设置off()的正确方法

时间:2013-07-21 18:20:31

标签: 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()的原因。 我想知道这是在屏幕模式条件更改时禁用它的错误方法,如果你可以帮我改进这段代码,我会非常高兴。

保重,祝你有个愉快的一天:)

1 个答案:

答案 0 :(得分:1)

你可以这样做:

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

$(touchableArea).unbind()可能有用。

或两者兼顾:

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

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

另请参见:Removing hammer events