jQuery兼容性问题

jQuery兼容性问题,jquery,compatibility,lavalamp,Jquery,Compatibility,Lavalamp,我试图使用一个小插件的菜单动画我发现在 但是,我想在jQuery的最新版本中使用它。但是,动画不适用于最新版本。有谁能告诉我为什么下面的内容可以在jQuery1.5及以下版本上使用,但现在却可以在上面的版本上使用 (function ($) { $.fn.lavaLamp = function (o) { o = $.extend({ fx: "linear", speed: 500, click:

我试图使用一个小插件的菜单动画我发现在

但是,我想在jQuery的最新版本中使用它。但是,动画不适用于最新版本。有谁能告诉我为什么下面的内容可以在jQuery1.5及以下版本上使用,但现在却可以在上面的版本上使用

(function ($) {
    $.fn.lavaLamp = function (o) {
        o = $.extend({
            fx: "linear",
            speed: 500,
            click: function () {}
        }, o || {});
        return this.each(function () {
            var b = $(this),
                noop = function () {},
                $back = $('<li class="back"></li>').appendTo(b),
                $li = $("li", this),
                curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0];
            $li.not(".back").mouseover(function () {
                move(this)
            }, noop);
            $(this).hover(noop, function () {
                move(curr)
            });
            setCurr(curr);

            function setCurr(a) {
                $back.css({
                    "left": a.offsetLeft + "px",
                    "width": a.offsetWidth + "px"
                });
                curr = a
            };

            function move(a) {
                $back.each(function () {
                    $.dequeue(this, "fx")
                }).animate({
                    width: a.offsetWidth,
                    left: a.offsetLeft
                }, o.speed, o.fx)
            }
        })
    }
})(jQuery);
(函数($){
$.fn.lavaLamp=功能(o){
o=$.extend({
外汇:“线性”,
速度:500,,
单击:函数(){}
},o |{});
返回此。每个(函数(){
var b=$(此),
noop=函数(){},
$back=$('
  • )。附录(b), $li=$(“li”,this), curr=$($li.current),this)[0]|$($li[0]).addClass(“current”)[0]; $li.not(“.back”).mouseover(函数(){ 移动(本) },noop); $(this).hover(noop,function(){ 移动(当前) }); 设置电流(电流); 函数setCurr(a){ $back.css({ “左”:a.offsetLeft+“px”, “宽度”:a.offsetWidth+“px” }); curr=a }; 功能移动(a){ $back.each(函数(){ $.dequeue(本“外汇”) }).制作动画({ 宽度:a.偏移网络宽度, 左:a.offsetLeft },o.speed,o.fx) } }) } })(jQuery);
    您始终可以加载两个版本的jquery。使用,您可以为插件加载1.5,但可以为自己使用1.7。

    使用jQuery 1.7.1中包含的演示,我可以在IE8和FF中使用动画。为了使链接正常工作,我必须在示例文件中更改的唯一一件事是注释掉click事件中的return false,如下所示:

    $(function() {
        $("#1, #2, #3").lavaLamp({
            fx: "backout",
            speed: 700,
            click: function(event, menuItem) {
                //return false;
            }
        });
    });
    

    因为这妨碍了实际链接的工作。这就是你的问题吗?如果没有,那么代码中可能存在其他错误,因为它似乎正在工作。

    问题在于行:

    $li.not(".back").mouseover(function(){move(this)}, noop);
    
    取出处理程序中的第二个参数:

    $li.not(".back").mouseover(function(){move(this)});
    

    您希望使用鼠标悬停而不是悬停的原因是您有子菜单项。使用鼠标悬停有一个错误,当鼠标悬停在子菜单项上时,下划线元素会重置回第一项

    是否可以调整此代码中的某些内容,使其与1.7兼容?谢谢,我要做的就是把鼠标移到悬停位置。它解决了问题,但现在当我在下拉菜单上悬停时,它不起作用。你能给我们一个你的代码和css的示例吗?就像你用来应用插件的代码一样。您在原始帖子中提供的代码是针对实际插件的。我认为你的css或者对插件的调用可能有问题,因为我的回答中提到的例子非常有效。