简体   繁体   English

鼠标悬停时,clearinterval不起作用

[英]clearinterval not working when hover over

I follow all the answers I got for the clearinterval, it exactly the same as how others working one. 我遵循我为clearinterval获得的所有答案,它与其他人的工作方式完全相同。 Not sure what I did wrong. 不知道我做错了什么。 I just want the slide to stop when to hover over to the div. 我只想将幻灯片停在何时将鼠标悬停在div上。 I even put a cursor: pointer into the div, but seem like this doesn't help. 我甚至把一个游标:指针放入div,但看起来这样做没有用。

 var myVar = window.setInterval(yanslider, 7000); function yanslider(){ $('.slider-inner > div:first') .fadeOut(1000) .removeClass('active') .next() .fadeIn(1000) .addClass('active') .end() .appendTo('.slider-inner'); } $( ".slider-inner" ).hover(function() { // onmouseover window.clearInterval(myVar); // onmouseout yanslider(); }); 
 .slider-inner{ width:200px; height:200px; position:relative; overflow:hidden; border:#666 solid 1px; } .slider-inner > div{ display:none; width:200px; height:200px; } .slider-inner .active{ display:inline-block; cursor: pointer; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="slider-inner"> <div id="item" class="active"><p>#1</p></div> <div id="item" ><p>#2</p></div> <div id="item" ><p>#3</p></div> </div> 

One approach to this is to use a timeout, rather than an interval. 一种方法是使用超时而不是间隔。

  • yanslider can create a timeout that performs the action, and recursively calls itself to create a logical loop yanslider可以创建执行操作的超时,并递归调用自身以创建逻辑循环
  • on page load, call yanslider() to start the loop 在页面加载时,调用yanslider()来启动循环
  • When you hover over the slider, cancel the timeout 将鼠标悬停在滑块上时,取消超时
  • When you hover out the slider, call the function again so that the logical loop resumes 当您将鼠标悬停在滑块上时,再次调用该函数以便逻辑循环恢复

 var sliderTimeout; function yanslider () { //start a timeout for seven seconds later sliderTimeout = setTimeout(function(){ $('.slider-inner > div:first') .fadeOut(1000) .removeClass('active') .next() .fadeIn(1000) .addClass('active') .end() .appendTo('.slider-inner'); yanslider(); // recursive loop }, 2000); } $( ".slider-inner" ).hover( function () { // onmouseover clearInterval( sliderTimeout ); // terminate the timeout }, function () { // onmouseout yanslider(); // start the loop again } ); yanslider(); // start the loop on page load 
 .slider-inner{ width:200px; height:200px; position:relative; overflow:hidden; border:#666 solid 1px; } .slider-inner > div{ display:none; width:200px; height:200px; } .slider-inner .active{ display:inline-block; cursor: pointer; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="slider-inner"> <div id="item" class="active"><p>#1</p></div> <div id="item" ><p>#2</p></div> <div id="item" ><p>#3</p></div> </div> 

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

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