2

我的设置如下所示:

$(".slideshow").cycle({
    slides: ".slide",
    timeout: 0,
    speed: 200,
    swipe: true
}).on("cycle-before", function(e, opts, outgoing, incoming, forwardFlag){
    // trying to cancel event here when some condition is met!
});

我要做的是检查是否到达了某个幻灯片,然后执行其他操作,而不是转换到下一张幻灯片。

我尝试了return false、和它们的组合,但无论我做什么,幻灯片仍会继续播放下一张幻灯片e.stopPropagation()e.stopImmediatePropagation()

cycle-before有没有办法从事件处理程序内部取消到下一张幻灯片的转换?

4

1 回答 1

1

一种方法是覆盖他们在http://jquery.malsup.com/cycle2/api/advanced.php上描述的 cycle2 内部 API

仅在满足您的条件时才调用原始内部 fn。它看起来像这样:

    $( '#mySlideshow' ).on( 'cycle-bootstrap', function( e, optionHash, API ) {
        // advanceSlide handles next, prev
        var origAdvanceSlide = API.advanceSlide;
        API.advanceSlide = function(n) {
            if (<condition>) {
                origAdvanceSlide.call(API,n);
            }
        }

        // jump handles the goto a specific slide
        var origJump = API.jump;
        API.jump = function(n) {
            if (<condition>) {
                origJump.call(API,n);
            }
        }
    });
于 2014-09-21T00:23:55.777 回答