Mam pole wyboru, niż można przełączać niektóre zachowania, jednak jeśli ktoś robi 100 kolejnych kliknięć, nie chcę wysyłać 100 żądań na moją stronę serwera.Jak prawidłowo odrzucać żądania ajaxowe
To co mam w miejsce dotychczas (znaleziono ten fragment kodu):
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); };
};
W moim dokumencie gotowy funkcję:
deBouncer(jQuery,'smartoggle', 'click', 1500);
Potem sam event:
$(window).smartoggle(function(e){
MyToggleFunction();
});
Działa to tak, jakbym ustawił 1500 ms na okres rozwijania, więc jeśli klikniesz n razy przy 1500 ms, wyśle tylko t on najpóźniej oznajmia serwerowi.
Istnieje jednak efekt uboczny tego, teraz moje zdarzenie click dla innych rzeczy jest pomieszane. Czy robię coś złego tutaj? Czy istnieje lepszy sposób na odrzucenie?
Zdecydowanie jesteś na ścieżce zapisu. Wiążę to wydarzenie z zaznaczonym pytaniem. To może pozwolić ci uprościć inne kodowanie. –
@JeremyJStarcher czy możesz podać przykład tego, co masz na myśli? –
Będę potrzebował zobaczyć twój znacznik ... lub mogę dać ci wymyślony przykład na podstawie tego, jak to zrobię. –