Ich höre ajaxStart () und ajaxStop () zushow / hide a spinner, und ich mache ein paar AJAX-Mocks in JS, während Server geschrieben werden. Es ruft nur eine Funktion auf, um Mock-Daten mit einem setTimeout () zu generieren. Im Moment rufe ich einfach hide () und manuell auf show () auf dem Spinner, aber ich möchte JQuery wirklich nur mitteilen, wenn ich meine "Anfrage" starte und stoppe und die Ereignisse auf diese Weise durchlaufen, damit ich den Spinner währenddessen nicht versehentlich verstecke () ein echt Die Ajax-Anforderung wird weiterhin im Hintergrund ausgeführt.
Kann das einfach gemacht werden?
BEARBEITEN: Dies ist der Code, für den ich mich entschieden habe JQuery.active
Anzahl:
function fakeAJAX(f) {
if(jQuery.active++ === 0 ) {
jQuery.event.trigger("ajaxStart");
}
setTimeout(function () {
f();
if(!(--jQuery.active)) {
jQuery.event.trigger("ajaxStop");
}
}, Math.round(Math.random() * 3000 + 250));
}
Antworten:
6 für die Antwort № 1Entsprechend der Quellen Sie müssen nur Folgendes aufrufen:
jQuery.event.trigger( "ajaxStart" );
und
jQuery.event.trigger( "ajaxStop" );
entsprechend.
http://jsfiddle.net/zerkms/7RVbz/