2014-01-13 177 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