简体   繁体   English

jQuery避免在特定区域上隐藏切换div

[英]jQuery avoid toggle div from hiding when on a certain area

I have some jquery that does a link menu hover effect. 我有一些jQuery,它执行链接菜单悬停效果。

My problem is that when I move the mouse to go towards the hovered (#test) div, the div hides so I never get to be able to click on the links below. 我的问题是,当我将鼠标移到悬停的(#test)div上时,该div会隐藏,因此我永远无法单击下面的链接。

Here's the code: 这是代码:

//HTML

<li id="hoverer" class="tab-link" data-tab="ideas_by_stage" style="position:relative">Hover here...</li>

<div id="test" style="display:none;position:absolute;z-index:999999;border:1px solid grey;width:200px;padding:4px 10px;left:170px;background-color:white;">

    <div class="btn"><a href="">Option 1</a></div>
    <div class="btn">Option 2</div>
    <div class="btn">Option 3</div>
    <div class="btn">Option 4</div>

</div>

//jQuery

$( "#hoverer" ).hover(function() {

      $('#test').toggle();

});

How can I fix this problem? 我该如何解决这个问题?

http://api.jquery.com/hover/ http://api.jquery.com/hover/

 $( "#hoverer" ).hover(function() { $('#test').fadeIn(); }); $( "#test" ).hover(function() { $(this).fadeIn(); }, function() { $(this).fadeOut(); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <li id="hoverer" class="tab-link" data-tab="ideas_by_stage" style="position:relative">Hover here...</li> <div id="test" style="display:none;position:absolute;z-index:999999;border:1px solid grey;width:200px;padding:4px 10px;left:170px;background-color:white;"> <div class="btn"><a href="">Option 1</a></div> <div class="btn">Option 2</div> <div class="btn">Option 3</div> <div class="btn">Option 4</div> </div> 

Your code work fine, if you move in red border can click on links , see this : 您的代码工作正常,如果您以红色边框移动可以单击链接,请参见:

  $( "#hoverer" ).hover(function() { $('#test').toggle(); }) 
 li { border: 1px solid red; } 
 <li id="hoverer" class="tab-link" data-tab="ideas_by_stage" style="position:relative">Hover here... <div id="test" style="display:none;position:absolute;z-index:999999;border:1px solid grey;width:200px;padding:4px 10px;left:170px;background-color:white;"> <div class="btn"><a href="">Option 1</a></div> <div class="btn">Option 2</div> <div class="btn">Option 3</div> <div class="btn">Option 4</div> </div> </li> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 

but best way is use click event ,See below Example : 但最好的方法是使用click事件,请参见下面的示例:

 $(document).ready(function() { $("#hoverer").on("click",function(){ $("#test").toggle(500); }) }) 
 <li id="hoverer" class="tab-link" data-tab="ideas_by_stage" style="position:relative">Click For Show / Hidden </li> <div id="test" style="display:none;position:absolute;z-index:999999;border:1px solid grey;width:200px;padding:4px 10px;left:170px;background-color:white;"> <div class="btn"><a href="">Option 1</a></div> <div class="btn">Option 2</div> <div class="btn">Option 3</div> <div class="btn">Option 4</div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 

You may use a different approach: 您可以使用其他方法:

  • hoverer: on mouseenter show test 悬停:在mouseenter上显示测试
  • test: on mouseleave hide test 测试:关于mouseleave隐藏测试

Adjust the dimensions of hoverer and test element so that this approach can work (ie: if you leave the div but enter in the li area you get two consecutive events: hide + show). 调整悬停器和测试元素的尺寸,以便此方法可以起作用(即:如果离开div但在li区域中输入,则会得到两个连续的事件:hide + show)。

The snippet: 片段:

 $( "#hoverer" ).on('mouseenter', function(e) { $('#test').show(); }); $('#test').on('mouseleave', function(e) { $('#test').hide(); }); 
 #hoverer { background-color: lightblue; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <li id="hoverer" class="tab-link" data-tab="ideas_by_stage" style="position:relative">Hover here...</li> <div id="test" style="display:none;position:absolute;z-index:999999;border:1px solid grey;width:200px;padding:4px 10px;left:170px;background-color:white;"> <div class="btn"><a href="">Option 1</a></div> <div class="btn">Option 2</div> <div class="btn">Option 3</div> <div class="btn">Option 4</div> </div> 

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

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