jQuery函数不能与Hammer.js一起使用

时间:2016-06-29 14:00:01

标签: javascript jquery hammer.js

我正在尝试将press添加到jQuery选择器。我在同一个文档上有很多元素,所以我不能为每个元素使用ID。我尝试$(selector)[i],就像解释 here 一样。

var selectProduct = $('.mh60 a');
for (var i = 0; i < selectProduct.length; i++) {
  Hammer(selectProduct[i]).on("press", function() {
     $(selectProduct[i]).addClass('active');
  });
}

它没有产生任何错误而且无法正常工作。我没有得到我在这里失踪的东西。

当我尝试按selectProduct[i]记录console.log(selectProduct[i]);时,会产生undefined结果。

更新1

当我移除for循环并且只使用selectProduct[0]selectProduct[1],...它正在工作但是selectProduct[i],它不起作用,所以我认为问题是for循环。但我没有得到它。

更新2

我也尝试了jQuery plugin,同样的问题

更新3

我再次尝试each()同样的问题。它会打印控制台消息,但addClass()不起作用。我想问题是this函数没有返回当前元素。

$('.mh60 a').each(function(){
    var mc = new Hammer(this);
    mc.on("press", function() {
      console.log('Double tap!');
      $(this).addClass('active');
    });
 });

2 个答案:

答案 0 :(得分:0)

为什么使用for? 尝试像这样更改您的代码

var selectProduct = $('.mh60 a');
selectProduct.Hammer().on("press", function() {
  $(this).addClass('active');
});

答案 1 :(得分:0)

最后,我使用each函数

解决了这个问题
$('.mh60 a').each(function(){
    var mc = new Hammer(this);
    var currentEle = $(this);
    mc.on("press", function() {
      currentEle.addClass('active');
    });
 });