jQuery兼容性问题
我试图使用一个小插件的菜单动画我发现在 但是,我想在jQuery的最新版本中使用它。但是,动画不适用于最新版本。有谁能告诉我为什么下面的内容可以在jQuery1.5及以下版本上使用,但现在却可以在上面的版本上使用jQuery兼容性问题,jquery,compatibility,lavalamp,Jquery,Compatibility,Lavalamp,我试图使用一个小插件的菜单动画我发现在 但是,我想在jQuery的最新版本中使用它。但是,动画不适用于最新版本。有谁能告诉我为什么下面的内容可以在jQuery1.5及以下版本上使用,但现在却可以在上面的版本上使用 (function ($) { $.fn.lavaLamp = function (o) { o = $.extend({ fx: "linear", speed: 500, click:
(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或者对插件的调用可能有问题,因为我的回答中提到的例子非常有效。