jquery帮助延迟

时间:2013-04-02 17:40:17

标签: jquery

我试图在每个动画之间添加延迟。

尝试了

slicebox = $( '#sb-slider3' ).delay(2000).slicebox({

关于最后一个但不是快乐。有任何想法吗?仍然是jQuery的新手


下面的完整代码
<script type="text/javascript">
$(function() {
    var Page = (function() {
        var $navArrows = $('#nav-arrows').hide(),
            $navDots = $('#nav-dots').hide(),
            $nav = $navDots.children('span'),
            $shadow = $('#shadow').hide(),
            slicebox = $('#sb-slider3').delay(2000).slicebox({
                onReady: function () {
                    $navArrows.show();
                    $navDots.show();
                    $shadow.show();
                },
                onBeforeChange: function(pos) {
                    $nav.removeClass('nav-dot-current');
                    $nav.eq(pos).addClass('nav-dot-current');
                }
            }),
            init = function() {
                initEvents();
            },
            initEvents = function() {
                // add navigation events
                $navArrows.children(':first').on('click', function() {
                    slicebox.next();
                    return false;
                });
                $navArrows.children(':last').on('click', function() {
                    slicebox.previous();
                    return false;
                });
                $nav.each(function(i) {
                    $(this).on('click', function(event) {
                        var $dot = $(this);
                        if (!slicebox.isActive()) {
                            $nav.removeClass('nav-dot-current');
                            $dot.addClass('nav-dot-current');
                        }
                        slicebox.jump(i + 1);
                        return false;
                    });
                });
            };
        return {
            init: init
        };
    })();
    Page.init();
});
</script>

然后用

重复
slicebox = $( '#sb-slider3' ).delay(2000).slicebox( {

更改为

slicebox = $( '#sb-slider2' ).delay(1000).slicebox( {

和     slicebox = $('#sb-slider0')。delay(3000).slicebox({

任何想法?

1 个答案:

答案 0 :(得分:0)

delay()仅适用于动画,但您可以使用queue()向动画队列注册自己的函数:

slicebox = $("#sb-slider3").delay(2000).queue(function() {
    $(this).slicebox({
        onReady: function() {
            $navArrows.show();
            $navDots.show();
            $shadow.show();
        },
        onBeforeChange: function(pos) {
            $nav.removeClass('nav-dot-current');
            $nav.eq(pos).addClass('nav-dot-current');
        }
    }).dequeue();
});

这可能比setTimeout()更具可读性(并且更易于链接)。