编程语言
首页 > 编程语言> > 仅兑现一系列javascript / jQuery事件中的最新事件的最简单方法

仅兑现一系列javascript / jQuery事件中的最新事件的最简单方法

作者:互联网

我必须想象这是javascript / jQuery的常见用例,因此请原谅我是否在网站的其他位置,我进行了搜索,但找不到此基本用例.

我有一个可见的div(A).将鼠标悬停在该div上会显示其他一些div(B& C).取消悬停任何这些div(A,B或C)将隐藏两个显示的div(B和C).

很简单吧?问题在于,当您快速连续地悬停和取消悬停多次时,简单的行为会导致丑陋,因为所有事件都叠加在一起,然后在一段时间内就像手风琴一样.

我尝试将typewatch函数引入方程式:

var typewatch = (function(){
      var timer = 0;
      return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
      }  
    })();

但是我想我无法正确使用它(也许我必须调用一个单独的自定义切换函数,该函数调用typewatch本身或其他功能?).

为了便于理解,下面是确切情况的说明:
http://jsfiddle.net/tchalvakspam/KG3P9/7/

但是总的来说,我如何才能捕捉到多个事件而仅纪念最近的一个?

解决方法:

实际上,这曾经让我很困扰.在制作动画之前,请致电$.stop(),它将冻结轨道中任何当前存在的动画,并为您指定新的目标.

$("#container")
  .mouseenter(
    function(){
     $(".panels", this).stop(true, true).slideDown(); 
    })
  .mouseleave(
    function(){
     $(".panels", this).stop(true, true).slideUp();
    }
  );

这遵循了jQuery API中针对$.stop()方法本身提供的文档,因为它们使用单​​个图像提供了类似的示例.

演示:http://jsbin.com/adeqef/2/edit

标签:last-modified,javascript,jquery,typewatch
来源: https://codeday.me/bug/20191208/2090001.html