3

別々の div ID を使用して関数 stockTicker() を 2 回呼び出すと、2 つのティッカーがスムーズに実行されず、ジャンプします: http://jsfiddle.net/Tb6VY/

しかし、ティッカーが 1 つしかない場合は問題なく動作します: 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);
4

1 に答える 1

1

を宣言するのを忘れたため$firstElem var、「グローバル」変数として扱われました (したがって、他のティッカーと競合します)。

を宣言した後var $firstElem = $ticker.children(":first");、ティッカーは正常に動作します。フィドル: http://jsfiddle.net/Tb6VY/2/

于 2012-10-26T23:25:40.190 に答える