当Mouseenter尚未完成时,Mouseleave不会触发

时间:2013-12-11 19:21:54

标签: jquery mouseenter mouseleave

我遇到了使用jquery的mouseenter和mouseleave的问题。

输入div时,将启动mouseenter功能。当我在完成mouseenter之前离开div时,mouseleave不会触发。

我做了一个jsfiddle让它更容易理解。

http://jsfiddle.net/8sLLD/1/

代码:

$("#menu1").mouseenter(function() {
   //code

})
    $("#image").mouseleave(function () {
    //code
});

因此,当进入按钮时,会出现一个图像。在图像出现之前离开按钮(在光标接触图像之前),鼠标离开不会触发。

编辑: 当使用#menu进行鼠标移动时,只需“移动”鼠标,图像就会非常奇怪。

我知道已经存在这样的一些问题,但它们都没有为我工作。

非常感谢,对不起我的英语

1 个答案:

答案 0 :(得分:2)

您可以使用hover事件处理程序来设置进出处理程序函数。

如果将悬停设置在#p2之类的包装元素上会更简单,因此当您进入/退出包装器而不是其子代时它将被触发。

代码:

 $('document').ready(function () {
     $("#p2").hover(function () {
         $(this).css("cursor", "pointer")

         $("#image").css("left", "75");
         $("#image").stop().animate({
             width: "145px",
             height: "145px",
             left: "0"
         }, 'slow');

         $("#c").animate({
             top: "100"
         }, 'slow');

     }, function () {
         $("#image").stop().animate({
             width: "0%",
             height: "0%",
             left: "75"
         }, 'slow');
         $("#c").animate({
             top: "0"
         }, 'slow');
     });
 });

演示:http://jsfiddle.net/qwPvv/