Hover(),mouseenter(),mouseover()等来回跳跃

时间:2016-03-09 14:43:30

标签: javascript jquery mouseover jquery-hover mouseenter

当我将鼠标悬停在图像上时,我会尝试隐藏图像并显示另一个图像。当你徘徊时,另一种方式。

我尝试过使用像mouseenter,mouseover,hover等想到的所有各种悬停效果。

它们都会导致同样的问题。如果我非常坚定而迅速地将光标拖动到动作区域,那么它将给我带来所需的效果。然而,如果我慢慢将光标拖动到动作区域,那么它将在图像之间跳转几次,最后停在正确的图像上。

这看起来非常不专业,我希望它能够做得更好,因此无论我是慢速还是快速,它都只会跳一次。

这是我的剧本:

$("#DenmarkMap").hide();
$("#InfoBadge1").hover(function(){
    $("#InfoLogo").hide("puff");
    $("#DenmarkMap").show("puff");
}, function(){
    $("#DenmarkMap").hide("puff");
    $("#InfoLogo").show("puff");
});

这是一个不起作用的小提琴 https://jsfiddle.net/ydeLvxx2/

希望你们能帮助我解决这个问题。

2 个答案:

答案 0 :(得分:1)

这是一个纯粹的Javascript解决方案(不需要jQuery)

https://jsfiddle.net/uL0hpxbu/ 更新:CSS3版本" puff"效果:https://jsfiddle.net/230ta4tk/2/

以下是主script的外观:

    var InfoBadge1 = document.getElementById("InfoBadge1");
    var InfoLogo = document.getElementById("InfoLogo");
    var DenmarkMap = document.getElementById("DenmarkMap");

    InfoBadge1.addEventListener("mouseover", function() {
      InfoLogo.classList.toggle("puff");
      DenmarkMap.classList.toggle("puff");
    });
    InfoBadge1.addEventListener("mouseout", function() {
      InfoLogo.classList.toggle("puff");
      DenmarkMap.classList.toggle("puff");
    });

和CSS部分(只是一个例子,根据需要改变它)

    #DenmarkMap {
      position: absolute;
      left: 0;
      top: 0;
      transition: .5s all;
    }
    #InfoLogo {
      position: absolute;
      left: 250px;
      top: 120px;
      transition: .5s all;
    }
    #InfoBadge1 {
        position: absolute;
        left: 0px;
        top: 120px;
    }
    .puff {
      transform: scale(1.2);
      opacity: 0;
    }

和HTML:

<img id="InfoBadge1" src="http://dummyimage.com/200x100/803580/ffffff&text=InfoBadge1" alt="" />
<img id="InfoLogo" src="http://dummyimage.com/200x100/803580/ffffff&text=InfoLogo" alt="" />
<img id="DenmarkMap" class="puff" src="http://dummyimage.com/200x100/3c8036/ffffff&text=DenmarkMap" alt="" />

答案 1 :(得分:0)

您不应将悬停的mouseleave / mouseout事件绑定到同一图片,因为您只是隐藏它

相反,请考虑将hover函数绑定到父DOM节点(例如DIV):

<div id="images">
  <img id="InfoBadge1" src="./Photos/DenmarkInfoBadge.png"> 
  <img id="InfoLogo" src="./Photos/InfoLogo.png">
  <img id="DenmarkMap" src="./Photos/DenmarkMap.png">
</div>

您的javascript可以成为:

$("#DenmarkMap").hide();
$("#images").hover(function(){
    $("#InfoLogo").hide("puff");
    $("#DenmarkMap").show("puff");
}, function(){
    $("#DenmarkMap").hide("puff");
    $("#InfoLogo").show("puff");
});