2017-08-09 82 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);