2017-08-09 68 views
-1

一直在寻找一个去抖动函数或在Jquery中去抖动的方法。动画的构建可能会超级烦人。 继承人的代码:JQuery中的去抖函数?

function fade() { 
    $('.media').hide(); 
    $('.media').fadeIn(2000); 
} 
var debounce = false; 
function colorChange() { 

    if (debounce) return; 
    debounce = true; 
    $('.centered').mouseenter(function() { 
    $('.centered').fadeTo('fast', .25); 
    }); 
    $('.centered').mouseleave(function() { 
    $('.centered').fadeTo('fast', 1); 
}); 
} 

function colorChange2() { 
    $('.centered2').mouseenter(function() { 
    $('.centered2').fadeTo('fast', .25); 
}); 
$('.centered2').mouseleave(function() { 
    $('.centered2').fadeTo('fast', 1); 
}); 
} 

function colorChange3() { 
$('.centered3').mouseenter(function() { 
    $('.centered3').fadeTo('fast', .25); 
}); 
$('.centered3').mouseleave(function() { 
    $('.centered3').fadeTo('fast', 1); 
}); 
} 

function closerFade() { 
    $('.closer').hide(); 
    $('.closer').fadeIn(2000); 
} 

我的包裹中所有的$(document)。就绪(函数(){

有没有办法去抖??

+1

你只是想停止动画? – CumminUp07

+0

当你将鼠标悬停在图片上时,它将开始动画。如果你再运行几次,动画将会增加。 – slikk

+0

根据你想要的行为,你可能会想看看这个https://api.jquery.com/finish/它有停止动画,清除它们或完成它们的不同选项 – CumminUp07

回答

1

我只想包括underscore.js在我的项目并使用它包含了防抖功能,它的伟大工程。我在多个项目中使用它。

http://underscorejs.org/#debounce

debounce_.debounce(函数,等待,[即时])创建并返回传递的功能,这将推迟其 执行,直到等待后,自上次 一次被调用毫秒已经过去的 新版本去抖。用于实现只应在输入停止后才会发生 的行为。例如:渲染一个Markdown注释的预览 ,在窗口 停止调整大小后重新计算布局等等。

在等待间隔结束时,函数将被调用,最近传递给去抖函数的参数为​​ 。

传递true作为直接参数,使debounce触发 函数而不是等待 区间的后沿。在防止意外 双击“提交”按钮从第二次触发的情况下有用。

var lazyLayout = _.debounce(calculateLayout, 300); 
$(window).resize(lazyLayout);