【问题标题】:jQuery Hover flickers if trigger div and targeted div overlap如果触发 div 和目标 div 重叠,jQuery Hover 会闪烁
【发布时间】:2011-06-19 08:10:07
【问题描述】:

我已经设置了一个非常简单的 jQuery 悬停功能,但问题是当您将鼠标悬停在触发 div 上时,它可以工作,但是如果您将鼠标移到目标 div 上同时仍在触发 div(重叠)上,它会闪烁!?有什么想法吗?

我有这个 jQuery 代码:

            $("#tag").hover(
              function () {
                $("#homeHover").show();
              }, 
              function () {
                $("#homeHover").hide();
              }
            );

使用这种 HTML 结构:

<div id="homeHover"></div>
<div id="tag">

</div>

还有这个 CSS:

#homeHover {
width: 150px;
height: 150px;
position: absolute;
background: url("../img/arrow.png") no-repeat scroll 0 0 transparent;
top: 145px;
left: 0px;
display: none;
}
#tag {
float: left;
}

【问题讨论】:

    标签: jquery jquery-hover


    【解决方案1】:

    当您移动到目标 div 上时,您可以触发触发器 div 的 mouseenter 和 mouseleave 事件。这将停止闪烁。

    $("#homeHover").on({
        mouseenter: function(){
            // Trigger #tag hover to stop flickering
            $('#tag').mouseenter();
        }
    
        mouseleave: function(){
            // Trigger #tag mouseleave
            $('#tag').mouseleave();
        }
    });
    

    【讨论】:

      【解决方案2】:
      $(document).mouseover(function(e) {
          if (e.target == $("#homeHover").get(0) || e.target == $("#tag").get(0)) {
              $("#homeHover").show();
          }
          else {
              $("#homeHover").hide();
          }
      
      });
      

      【讨论】:

      • 哎呀我不明白你的问题
      • 所以现在可以了。你必须使用这个,因为你的鼠标在标签上,鼠标不在 homeHover 上,然后 homeHover 显示出来,现在 homeHover 结束了,但标签不在了,这就是闪烁的原因。使用此全局鼠标悬停事件捕获此检测到其中任何一个同时悬停。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多