jQuery 函数不适用于 Hammer.js

jQuery functions not working with Hammer.js

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

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

它没有产生任何错误,也没有工作。我没有得到我在这里缺少的东西。

当我尝试通过 console.log(selectProduct[i]); 记录 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');
    });
 });

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

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

最后我用each函数解决了这个问题

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