Belirli davranışları değiştirebileceğinden bir onay kutum var, ancak birisi ardışık 100 tıklama yaptığında, sunucu tarafıma 100 istek göndermek istemiyorum. Sonraajax istekleri doğru şekilde nasıl çözülür
deBouncer(jQuery,'smartoggle', 'click', 1500);
olayın kendisi:
$(window).smartoggle(function(e){
MyToggleFunction();
});
benim belge hazır fonksiyonunda
deBouncer = function($,cf,of, interval){
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced() {
var obj = this, args = arguments;
function delayed() {
if (!execAsap)
func.apply(obj, args);
timeout = null;
}
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || interval);
}
}
jQuery.fn[cf] = function(fn){ return fn ? this.bind(of, debounce(fn)) : this.trigger(cf); };
};
:
Bu
I (bu kod parçacığı bulundu) şimdiye kadar yerinde ne varBu, 1500 ms ayırma periyodu olarak 1500 ms koyduğum gibi çalışır, bu yüzden 1500 ms'lik bir zamana tıklarsanız, yalnızca t O sunucuya son durumu.
Bunu kullanmanın yan etkisi var, artık diğer şeyler için tıklama etkinliğim berbat. Burada yanlış bir şey mi yapıyorum? Geri çekilmenin daha iyi bir yolu var mı?
Kesinlikle buradaki yazma yolundasınız .. Bu olayı yalnızca söz konusu onay işaretine bağladım. Bu, diğer kodların bazılarını basitleştirmenize izin verebilir. –
@JeremyJStarcher, ne demek istediğin hakkında bir örnek verebilir misin? –
İşaretlemenizi görmem gerekiyor ... ya da size nasıl yaptığımı temel alan bir örnek verebilirim. –