jQuery animate()与多个函数调用冲突

时间:2012-10-26 22:23:03

标签: jquery jquery-animate

似乎当我使用单独的div ID对函数stockTicker()进行两次调用时 - 两个代码将无法顺利运行并跳转: http://jsfiddle.net/Tb6VY/

但如果我只有一个自动收报机就可以了: http://jsfiddle.net/39JJ4/

关于如何让第一个工作的任何想法?

功能:

( function($) {
    $.fn.stockTicker = function(options) {

        if (typeof (options) == 'undefined') {
            options = {};
        }

        var settings = $.extend( {}, $.fn.stockTicker.defaults, options);
        var $ticker = $(this);

        function startTicker() {
            //stopTicker();
            $firstElem = $ticker.children(":first");
            var $width = $firstElem.width();
            $ticker.stop().animate({
                "right": "+="+$width+"px"
            }, {
                duration: settings.speed*200,
                easing: 'linear',
                complete: function() {
                    $ticker.css({"right": "-="+($width)+"px"});
                    $firstElem.clone().appendTo($ticker);
                    $firstElem.remove();
                    startTicker();
                }
            });
        }

        function stopTicker() {
            $ticker.stop();
        }

        $ticker.hover(stopTicker, startTicker);
        startTicker();
    };

    $.fn.stockTicker.settings = {};
    $.fn.stockTicker.defaults = {
        tickerID :null,
        speed :1,
    };
})(jQuery);

1 个答案:

答案 0 :(得分:1)

您忘记声明$firstElem var,导致它被视为“全局”变量(从而与其他代码发生冲突)。

声明var $firstElem = $ticker.children(":first");后,自动收报机工作正常。小提琴:http://jsfiddle.net/Tb6VY/2/