繁体   English   中英

jQuery mouseenter只是闪烁的img

[英]jQuery mouseenter is just flickering the img

我正在一个要显示图像的项目上,当鼠标移到图像上时,图像消失并且页面上的信息出现。 当鼠标移出元素时,图像会重新出现。 我正在使用mouseenter和mouseleave,但是如果将鼠标稍微移动一下,图像就会一直闪烁。

 $(".second-div").mouseenter(function() { $(this).removeClass("second-div"); }); $(".second-div").mouseleave(function() { $(this).addClass("second-div"); }); 
 .first-div { height: 200px; width: 300px; border: 1px solid black; } .second-div { height: 200px; width: 300px; border: 1px solid red; position: relative; bottom: 201px; background-image: url(https://image.freepik.com/free-vector/nature-background-of-a-grassy-landscape_1048-1305.jpg); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <div class="first-div"> </div> <div class="second-div"> </div> 

这是jsfiddle:

https://jsfiddle.net/cjbruin/t78v7tyj/

不需要JS或jquery,可以使用CSS做到这一点。 只需在:hover上切换顶部元素的不透明度

 .first-div { height: 200px; width: 300px; border: 1px solid black; } .second-div { height: 200px; width: 300px; border: 1px solid red; position: relative; bottom: 201px; background-image: url(https://image.freepik.com/free-vector/nature-background-of-a-grassy-landscape_1048-1305.jpg); transition: opacity .25s; } .second-div:hover { opacity: 0; } 
 <div class="first-div"> content </div> <div class="second-div"> </div> 

我同意CSS解决方案更好,更清洁。 但是下面是我相信您正在尝试使用jQuery完成的工作。

在最初的问题中,您要添加/删除second-div级类,该类导致鼠标事件异常启动。

 $(".second-div").mouseenter(function() { $(".second-div").hide(); }); $(".first-div").mouseleave(function() { $(".second-div").show(); }); 
 .first-div { height: 200px; width: 300px; border: 1px solid black; } .second-div { height: 200px; width: 300px; border: 1px solid red; position: relative; bottom: 201px; background-image: url(https://image.freepik.com/free-vector/nature-background-of-a-grassy-landscape_1048-1305.jpg); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <div class="first-div"> </div> <div class="second-div"> </div> 

试试这个: https : //jsfiddle.net/houtan/mc4vLgev/

  $("#parentDiv").mouseenter(function() { var hasDiv = $( "#secondDiv" ).hasClass( "second-div" ).toString(); $( "#result1" ).html( "is hover: " + hasDiv ); $("#secondDiv").removeClass("second-div"); }); $("#parentDiv").mouseleave(function() { var hasDiv = $( "#secondDiv" ).is( ".second-div" ).toString(); $( "#result1" ).html( "is hover: " + hasDiv ); if (hasDiv==="false") { $("#secondDiv").addClass("second-div"); } }); 
 #parentDiv { width: 300px; height: 200px; } .first-div { height: 200px; width: 300px; border: 1px solid black; } .second-div { height: 200px; width: 300px; border: 1px solid red; position: relative; bottom: 201px; background-image: url(https://image.freepik.com/free-vector/nature-background-of-a-grassy-landscape_1048-1305.jpg); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="parentDiv"> <div id="firstDiv" class="first-div"> </div> <div id="secondDiv" class="second-div"> </div> </div> <div id="result1">is hover: </div> <script> </script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM