解决方案 »

  1.   

    点击后导航栏的结构变了没? 我看了一下lavalamp的代码, 如果结构没变, 滑块不会重新跑到第一个li中的
    如果改变了结构, 你看这段源码很简单: (function($) {
    $.fn.lavaLamp = function(o) {
        o = $.extend({ fx: "linear", speed: 500, click: function(){} }, o || {});    return this.each(function() {
            var me = $(this), noop = function(){},
                $back = $('<li class="back"><div class="left"></div></li>').appendTo(me),
                $li = $("li", this), curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0];        $li.not(".back").hover(function() {
                move(this);
            }, noop);        $(this).hover(noop, function() {
                move(curr);
            });        $li.click(function(e) {
                setCurr(this);
                return o.click.apply(this, [e, this]);
            });        setCurr(curr);        function setCurr(el) {
                $back.css({ "left": el.offsetLeft+"px", "width": el.offsetWidth+"px" });
                curr = el;
            };        function move(el) {
                $back.each(function() {
                    $(this).dequeue(); }
                ).animate({
                    width: el.offsetWidth,
                    left: el.offsetLeft
                }, o.speed, o.fx);
            };    });
    };
    })(jQuery);看看代码, 知道它是有一个.current的识别的, 如果重刷了导航栏, 只需要在回调函数中, 将刷出来的导航栏的当前li加一个current类就可以了. 这个控件也提供了一个click的传入, $(elem).lavalamp({click: function(){ // 这里面可以加 }})