我有一个简单的猫头鹰旋转木马,带有自动播放设置和导航箭头,定义如下:
var options = {
mainBanner: {
animateOut: 'fadeOut',
autoplay: true,
autoplayHoverPause: false,
autoplaySpeed: 1200,
dots: false,
lazyLoad: true,
loop: true,
mouseDrag: false,
pullDrag: false,
touchDrag: false,
nav: true,
navText: [
"‹",
"›"
]
},
...
当用户单击导航箭头时,我希望它停止自动播放 . 为此,我添加了以下功能:
setTimeout(function () {
$('.owl-nav > div').on('click', function () {
$('.owl-carousel').trigger('stop.owl.autoplay');
})
}, 500);
(我添加了超时,因为加载此函数时,还没有呈现.owl-nav元素 . 它不是很优雅,但它可以达到目的) .
问题是当我单击导航箭头时,自动播放停止 . 但是,如果我再次点击它们(又一次又一次),滑块会保持自动播放 . 这不是预期的行为 - 我只是希望它从第一次点击停止 .
任何关于如何解决这个问题的提示都非常感谢 . 谢谢!
3 回答
从我收集的here和here看来它是一个计时器问题:触发
stop.owl.autoplay
将破坏计时器,但不会更改自动播放设置,因此再次设置计时器 . 您必须在设置中关闭(如果要重新激活,则重新启动) .你可以试试:
编辑:第二个解决方案似乎工作:https://jsfiddle.net/b6x6vc8q/3/
为了阻止猫头鹰自动播放你可以触发相应的事件:
stop.owl.autoplay:停止自动播放 .
而:
play.owl.autoplay:运行自动播放
片段:
示例:
Codepen
CSS:
JS: