2013-06-19 140 views
0

我有一個適用於鼠標滾輪的功能,我想使用同樣的功能進行滑動。用於滑動的鼠標滾輪

// Mouse Wheel support 
this.MouseWheel = 
{ 
    init: function() 
    { 
     // Init mouse wheel listener 
     if(window.addEventListener) 
     { 
      my.ImageFlowDiv.addEventListener('DOMMouseScroll', my.MouseWheel.get, false); 
     } 
     my.Helper.addEvent(my.ImageFlowDiv,'mousewheel',my.MouseWheel.get); 
    }, 

    get: function(event) 
    { 
     var delta = 0; 
     if (!event) 
     { 
      event = window.event; 
     } 
     if (event.wheelDelta) 
     { 
      delta = event.wheelDelta/120; 
     } 
     else if (event.detail) 
     { 
      delta = -event.detail/3; 
     } 
     if (delta) 
     { 
      my.MouseWheel.handle(delta); 
     } 
     my.Helper.suppressBrowserDefault(event); 
    }, 

    handle: function(delta) 
    { 
    alert('handle called'); 
     var change = false; 
     var newImageID = 0; 
     if(delta > 0) 
     { 
      if(my.imageID >= 1) 
      { 
       newImageID = my.imageID -3; 
       change = true; 
      } 
     } 
     else 
     { 
      if(my.imageID < (my.max-1)) 
      { 
       newImageID = my.imageID +4; 
       change = true; 
      } 
     } 

     /* Glide to next (mouse wheel down)/previous (mouse wheel up) image */ 
     if(change) 
     { 
     //alert('new image id='+newImageID); 
      my.glideOnEvent(newImageID); 
     } 
    } 
}; 

早些時候,我使用的touchswipe插件,它工作正常,但我想用另外的插件作爲touchswipe令人不安觸摸支持。

$("#imageFlow").swipe({ 
    swipe:function(event, direction, distance, duration, fingerCount) { 
    alert('swipe called'); 
    if(direction == 'left') { 
     my.MouseWheel.handle(-1); 
    } else if (direction == 'right') { 
     my.MouseWheel.handle(1); 
    }  
    } 
}); 

回答

0

你看過Hammer JS嗎?我發現他們的語法很簡單,不會干擾我的其他觸摸事件。然後

你的代碼可能看起來與此類似:

Hammer($('#imageFlow')).on("swipe", function(event) { 
     console.log('swipe called'); //(instead of alert) 
     if (event.gesture.direction === 'left'){ 
      my.MouseWheel.handle(-1); 
     } else if (event.gesture.direction === 'right'){ 
      my.MouseWheel.handle(1); 
     }; 
    }); 

docs

的同時也要記住用3等號在JavaScript中。所以:的

if (myName === 'Jean-Marie'){//dostuff}

代替

if (myName == 'Jean-Marie'){//dostuff}

+0

您不必使用3個等號。那就是如果你想確保它們是相同的值和相同的類型。例如'1 ==「1」'是true,但是'1 ===「1」'不是真的。但是當比較兩個字符串時,它們是相同的。但是如果你知道'myName'是上面例子中的字符串,那麼'==='是毫無意義的。這裏有另外一個例子,當你需要使用它們時:'1 == true'評估爲'true',但'1 === true'評估爲false。 – DutGRIFF

+0

@DutGRIFF你應該總是使用'==='因爲。您可以使用'=='的獨特方式是通過與「if(val == null){...}」進行比較來檢查value的值是否爲null或未定義?https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Sameness http://blog.boyet.com/blog/javascriptlessons/javascript-an-acceptable-use-of-double-equals-just/ –

+0

@Yukulélé我不認爲'= =='對於字符串是必需的。我確實看到,如果在比較其他內容時使用'===',它可以爲您節省一些麻煩。我想盡可能多地使用'==='是一種很好的做法,但據我所知它在這裏沒有什麼區別。謝謝(你的)信息。 – DutGRIFF