Jquery 动画回调在动画开始时触发

Jquery 动画回调在动画开始时触发,jquery,callback,jquery-animate,hide,Jquery,Callback,Jquery Animate,Hide,我有一个关于.animate函数回调的问题。我试图让一个元素在光标离开其父元素时淡出。淡出后,该元素应隐藏,以便您不能将光标悬停在该元素上或单击该元素。但是,隐藏元素的回调函数在动画开始时调用,而不是在动画结束时调用。我试过很多东西,但都没用。如果需要的话,我可以发布我所有的代码(不多,只是一个小主页,上面有我为自己制作的一些链接) var fadeIn = {opacity: "1"}; var fadeOut = {opacity: "0"}; $(".link-main").hover(

我有一个关于.animate函数回调的问题。我试图让一个元素在光标离开其父元素时淡出。淡出后,该元素应隐藏,以便您不能将光标悬停在该元素上或单击该元素。但是,隐藏元素的回调函数在动画开始时调用,而不是在动画结束时调用。我试过很多东西,但都没用。如果需要的话,我可以发布我所有的代码(不多,只是一个小主页,上面有我为自己制作的一些链接)

var fadeIn = {opacity: "1"};
var fadeOut = {opacity: "0"};

$(".link-main").hover(function(){
    $(this).children(".link-sub").css("z-index", "10").show().animate(fadeIn, 100);
}, function(){
    // The animation.
    $(this).children(".link-sub").animate(fadeOut, 100, "swing", function(){
        $(this).hide();
    });
});
此外,无论出于何种原因,仅仅使用.fadeIn和.fadeOut都不起作用。这些元素会立即消失

提前谢谢


编辑:这就是我现在拥有的jsfiddle.net/rqfcZ
.fadeIn
.fadeOut
执行
.show()
.hide()
本身。 尝试删除它们而不使用动画

只需
$(元素).fadeOut()


同样对于事件,您使用的是旧的jquery语法。看看()上的
.on()
@Frederic Hamidi My bad。。。。道歉

请访问此链接以获取解决方案


快速查看上面的链接,得出结论,您需要为此添加一个ref变量。

您是否可能设置为
true
?重复问题请参见下面的问题。通过将动画链接在一起,我成功地完成了类似的工作,因此每个动画都在前一个动画的回调中运行。您应该能够在animate()上使用回调,而不是在hover()上使用回调?@Akash,不是重复的,此提问者正确地将回调传递给
animate()
,而不是调用它。除非有人希望对动态创建的元素执行操作,否则不必使用on()。on()方法替换live(),但不是所有事件处理程序。@isherwood你说得对。但是由于
.hover
.on('mouseenter mouseleave')
的缩写(如文档中所述),我认为对于初学者来说,最好只学习
.on
。他们不赞成使用其他特定函数,如
。click()
@Paolo,你在哪里看到
click()
不赞成使用了?@isherwood和顺便说一句,你错了。正如docs所说:从jQuery1.7开始,.on()方法提供附加事件所需的所有功能handlers@Fr里查米迪是我的错。还没有弃用。我对JS/jQuery只有基本的了解,所以我不太理解这篇文章。你能确切地告诉我在我的代码中我必须修改什么吗?我在这里编辑了你的小提琴,请看一下我添加的是ref变量到$(这个),比如var a=$(这个);请配合使用,以获得所需的功能。。。