编程语言
首页 > 编程语言> > javascript – 将HammerJS与jQuery一起使用

javascript – 将HammerJS与jQuery一起使用

作者:互联网

下面我抓住容器,然后向左和向右滑动我触发一个点击,这是另一个功能,做一些奇特的动画爵士乐.

var element = document.getElementsByClassName('container');
var hammertime = new Hammer(element);
hammertime.on('swiperight', function(ev) {
  $('.btn-left').trigger('click');
});
hammertime.on('swipeleft', function(ev) {
  $('.btn-right').trigger('click');
});

我一直收到关于我所包含的Hammerjs库的错误(http://hammerjs.github.io/dist/hammer.min.js)未捕获的TypeError:a.addEventListener不是函数.

我做了一些研究,发现另一个stackoverflow问题,说我无法通过Hammerjs传递jQuery,因此我应该使用jQuery Hammer.我看了一下回购,并且近两年没有更新.

我是否需要使用jQuery Hammer(https://github.com/hammerjs/jquery.hammer.js)扩展,或者我可以通过jQuery而不需要它.

解决方法:

问题是新的Hammer()期望单个元素,getElementsByClassName返回NodeList.

如果你改成它

var hammertime = new Hammer(element[0])

应该按预期工作,因为你将传递匹配.container的第一个元素.如果要将其绑定到具有.container类的所有元素,则需要自己循环遍历它们.我很少使用jQuery,所以我通常会包含这个小帮助函数来循环NodeLists

function doToAll(elems, fn){
  var len = elems.length
  while(--len > -1){
    fn(elems[len])
  }
}

在这种情况下,你会像这样使用它:

doToAll(document.getElementsByClassName('container'), function(element){
  var hammertime = new Hammer(element)
  //add in the rest of your functionality
})

标签:jquery,javascript,hammer-js
来源: https://codeday.me/bug/20190608/1201180.html