2013-06-19 105 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