2014-01-13 142 views
2

我试图触发一些JS事件只触摸(用于显示或不是响应式项目的侧面菜单)。我已经看了Hammer.js,随后的基本知识,这里是我来的:只触摸触发​​Javascript事件

var $mainPage = $('#main-page'); 
    var drawer = 0; 
    $mainPage.hammer() 
       .on('swiperight', function(e){ 
        if(drawer){ 
        return true; 
        } 
        $mainPage.css({'transform': 'translateX(260px)', '-ms-transform': 'translateX(260px)', '-webkit-transform': 'translateX(260px)'}); 
        drawer = 1; 
       }) 
       .on('swipeleft', function(e){ 
        if(!drawer){ 
        return true; 
        } 
        $mainPage.css({'transform': 'translateX(0)', '-ms-transform': 'translateX(0)', '-webkit-transform': 'translateX(0)'}); 
        drawer = 0; 
       }); 

一切似乎要被罚款,除了它不仅对触摸事件,但与鼠标事件触发太大。如果我尝试用我的鼠标重现swype,它也可以...我不喜欢它:)

所以,我想知道如何才能做到这一点,只触发触摸动作的事件。

回答

1

Hammer.js将始终处理鼠标事件。理想情况下,我尝试用Modernizr或使用JavaScript检测触摸,然后初始化锤子代码。

if (Modernizr.touch) { 
    //your hammer code 
} 

或使用纯javascript。

var supportsTouch = 'ontouchstart' in document.documentElement; 

if(supportsTouch){ 
    // your hammer code 
} 
+0

这似乎工作,谢谢:) – Axiol