【问题标题】:jQuery functions not working with Hammer.jsjQuery 函数不适用于 Hammer.js
【发布时间】:2016-06-29 14:00:01
【问题描述】:

我正在尝试将 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');
  });
}

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

当我尝试通过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');
    });
 });

【问题讨论】:

    标签: javascript jquery hammer.js


    【解决方案1】:

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

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

    【讨论】:

    • hammer.min.js:6Uncaught TypeError: a.addEventListener is not a function
    • 不使用jquery选择器,试试纯js一个
    • 我尝试了同样的错误,您也可以查看与此问题相关的另一个问题,可能会有所收获
    • 如果您使用 jquery Hammer,您是否尝试过使用 selectProduct.Hammer().on(...)
    • 你的意思是这样的? selectProduct.Hammer.on("press", function() {..});同样的问题
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多