【问题标题】:hammer.js object has no method addEventListenerhammer.js 对象没有方法 addEventListener
【发布时间】:2015-01-28 11:58:57
【问题描述】:

我收到错误:Uncaught TypeError: Object [object Object] has no method 'addEventListener' hammer.js:168

我的代码是这样的:

<script type="text/javascript" src="js/hammer.js"></script>

设备就绪功能:

 var resim = $('#kaydir');

 Hammer(resim).on('swipeleft', function(ev){
     console.log('left: ', ev);
 });

似乎错误是在hammer.js 中。我该怎么办?

【问题讨论】:

    标签: javascript hammer.js


    【解决方案1】:

    我想你的问题是你没有安装Hammer.js's jQuery Plugin (GitHub)。

    因此,您无法将 jQuery 对象传递给 Hammer() 函数,您有两种选择:

    使用 jQuery 插件

    将上面链接的 jQuery 插件添加到您的项目中,然后调用:

    $('#kaydir').Hammer(...)
    

    没有 jQuery 插件

    使用[0],只将元素传递给Hammer(),而不是jQuery对象:

    Hammer(resim[0]).on(...)
    

    或者改为更改您的 resim 变量以保存调用 JavaScript 的 getElementById 的结果。

    var resim = document.getElementById('kaydir');
    Hammer(resim).on(...)
    

    【讨论】:

    • 我对你投了反对票,理由是“根据你昨天删除的同一个问题中提供的信息......”这样做的目的是什么?
    • @Andre Bulatov 此答案基于上一个问题中提供的信息。没有它,这个答案只不过是猜测。
    • Hammer(resim[0]).on(...) 它工作得很好,但是当我需要应用到 resim 中的所有元素时该怎么办??
    • @maddy 使用循环。 for (var i = 0; i &lt; resim.length; i++) { Hammer(resim[i]]).on(...) }
    • 将 jQuery 对象传递给 Hammer() 不起作用,无论是否拉动了 Hammer 的 jQuery 插件。但只传递元素作为答案,例如。 a=new Hammer($('.test')[0]) 工作正常。
    【解决方案2】:

    如果你使用 jQuery,你应该使用 jQuery Hammer version 并像这样使用它:

    var resim = $("#kaydir");
    resim.hammer().on("swipeleft", function(ev) {
        console.log('left: ', ev);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-09
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      相关资源
      最近更新 更多