Javascript 在jQuery中使用HammerJS

Javascript 在jQuery中使用HammerJS,javascript,jquery,hammer.js,Javascript,Jquery,Hammer.js,下面我抓起容器,左右滑动我触发了一个点击,这是另一个做一些奇特的动画爵士乐的功能 var element = document.getElementsByClassName('container'); var hammertime = new Hammer(element); hammertime.on('swiperight', function(ev) { $('.btn-left').trigger('click'); }); hammertime.on('swipeleft', fu

下面我抓起容器,左右滑动我触发了一个点击,这是另一个做一些奇特的动画爵士乐的功能

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
库()
uncaughttypeerror:a.addEventListener不是一个函数,我一直收到这个错误

我做了一些研究,发现了另一个stackoverflow问题,即我不能通过
Hammerjs
传递jQuery,因此我应该使用jQuery-Hammer。我看了一下回购协议,近两年都没有更新过


我需要使用jQuery Hammer()扩展,还是可以不需要它就通过jQuery。

问题是
new Hammer()
需要一个元素,而
getElementsByClassName
返回一个
NodeList

如果你把它改成

var hammertime = new Hammer(element[0])
这应该按预期工作,因为您将传递与
.container
匹配的第一个元素。如果要将其绑定到具有
.container
类的所有元素,则需要自己循环它们。我很少对任何东西使用jQuery,所以我通常包括这个小助手函数,用于循环遍历节点列表

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
})

或者,如果您只需要一个
.container
,可以使用
document.querySelector('.container')
获取它。