2015-06-22 93 views
0

我有猫头鹰转盘设置这样鼠标滚轮滚动火只有一次下一个回调

<div class="owl-carousel"> 
    <div>0</div> 
    <div>1</div> 
    <div>2</div> 
    <div>3</div> 
    <div>4</div> 
    <div>5</div> 
    <div>6</div> 
    <div>7</div> 
    <div>8</div> 
    <div>9</div> 
</div> 

这是JS

var owl = $('.owl-carousel'); 
owl.owlCarousel({ 
    items  : 1, 
    singleItem : true, 
    rewindNav : false, 
    dots  : true, 
}); 
owl.on('mousewheel', '.owl-stage', function (e) { 
    if (e.deltaY<0) { 
     console.log(e.deltaY); 
     owl.trigger('next.owl'); 
    } else { 
     owl.trigger('prev.owl'); 
    } 
    e.preventDefault(); 
}); 

的jsfiddle这里:http://jsfiddle.net/f0yph3aL/

,你可以看到,如果您滚动你的鼠标滑过红色方块,幻灯片就像疯了一样移动。我只需要让next.owl.carousel触发一次,这样鼠标滚轮就只会改变+1滑动条。

我试过owl.on内的setTimeout,试过debouncebind/unbind mousewheel。也许我做错了。感谢您的任何建议。

UPDATE:

这里是unbinded鼠标滚轮,它的伟大工程,但我不知道豪一些超时(setTimeout) http://jsfiddle.net/cz122kk6/1/

+0

它工作正常,我可以知道你正在测试哪个浏览器。 – stanze

+0

Opera,Chrome,FIrefox ..如果我用鼠标滚轮做大滚动,它会从0滚动到9 ..但如果我只滚动一点点,它就会滚动一个幻灯片。无论滚动鼠标滚轮多少,我都需要触发这个触发器 – 5ulo

回答

1

您可以设置转换标志并在时间转换开始/结束时更改它。下面是脚本代码:

$('.owl-carousel').each(function(i) { 
    var owl = $(this); 
    owl.owlCarousel({ 
     items: 1, 
     singleItem: true, 
     rewindNav: false, 
     dots: true, 
    }); 
    var allowTransitionLeft = false; 
    var allowTransitionRight = true; 
    owl.on('mousewheel', '.owl-stage', function (e) { 
     e.preventDefault(); 
     if (e.deltaY < 0) { 
      if(allowTransitionRight) { 
       allowTransitionRight = false; 
       owl.trigger('next.owl'); 
      }; 
     } else { 
      if (allowTransitionLeft) { 
       allowTransitionLeft = false; 
       owl.trigger('prev.owl'); 
      }; 
     } 
    }).on('translated.owl.carousel', function (e) { 
     allowTransitionRight = (e.item.count > e.item.index); 
     allowTransitionLeft = (e.item.index > 0); 
    }); 
}); 

你可以看到它在Updated Fiddle

当幻灯片切换结束时translated.owl.carousel事件被触发。在那里,我们根据Carousel的活动项目索引选择允许哪个转换。

猫头鹰旋转木马2个事件here列表。

编辑: 现在适用于多个实例。

+0

你先生,是天才!谢谢你多次!:) – 5ulo

+0

有多个猫头鹰实例的问题,检查更新的小提琴http://jsfiddle.net/f0yph3aL/8/,正如你可以看到你什么时候结束在第9张幻灯片上并转到另一部分,鼠标滚动不会被触发。 – 5ulo

+1

不是一个真正的问题,请检查上面的更新脚本。 – skobaljic

0
owl.owlCarousel({ 
    items  : 1, 
    singleItem : true, 
    rewindNav : false, 
    dots  : true, 
    loop: true, 
    smartSpeed: 1000, 
}); 

完成:)

后重新绑定鼠标滚轮
+0

Nope :(如果我从上到下滚动鼠标滚轮,它会触发两次,所以不会,减慢滑动速度并不是解决方案。我知道这个技巧是在deltaY (mousewheel) – 5ulo