Ich habe ein Plugin, das mir sagt, ob ein Element im Ansichtsfenster mit $('#element').visible()
sichtbar ist (auf true
gesetzt, wenn sichtbar).Verhindere den Aufruf von AJAX auf Bildlauf, wenn bereits
Jetzt möchte ich eine Funktion erstellen, die ich eine Seite nach unten scrollen und neuen Inhalt mit Ajax laden. Ich habe dies so weit:
window.onscroll = function() {
console.log($('#ele').visible());
if ($('#ele').visible()) {
//ajax call comes here
}
};
Sobald ich das Element zu sehen, mein Protokoll zeigt true:
Ich habe keine Probleme haben jetzt die Ajax-Anfrage Umsetzung, aber shouldn‘ t Blockiere ich diese Funktion nur einmal? Wie kann ich verhindern, dass ein neues Element, das bereits geladen wurde, erneut geladen wird (die Verwendung von Ajax wird verhindert)?
Ich dachte an eine Boolean-Variable, aber mein Problem ist, dass ich nicht weiß, wie man das implementiert, denn wenn ich eine Variable setze, wie würde der Browser seinen Wert wissen? Denn bei jeder Bewegung meines Mausrads kann es sich nicht erinnern, was der Wert dieser Variablen war?
EDIT:
habe ich versucht, den Code von Ismail und erreicht nie den Ajax-Aufruf (Alarm wird nicht angezeigt).
window.onscroll = function() {
var ajaxExecuted = false;
var ele = $('#load_more').visible();
console.log(ele);
return function() {
if (ajaxExecuted) return;
if (ele) {
alert("OK");
var ajaxArray;
ajaxArray = { page: 2 }
ajaxLoadContent(ajaxArray, "load_more", "ajax_load");
ajaxExecuted = true;
}
}
};
Vielen Dank für Ihre Antwort. Ich werde das jetzt versuchen. Meine Frage dazu ist, wie weiß der Browser, dass der Wert der Variablen ajaxExecuted? Ich meine, was genau ist der Hintergrundprozess Schritt für Schritt? – AlexioVay
Also habe ich das versucht, aber der Code kommt nie an 'if (ajaxExecuted) zurück,' weil er danach auf true gesetzt wird? – AlexioVay
Die äußere Funktion ist ein 'sofort aufgerufener Funktionsausdruck ', der eine Funktion (den Event-Handler) zurückgibt. Der Event-Handler wird innerhalb des IIFE-Funktionsumfangs ausgeführt, wobei "ajaxExecuted" verfügbar ist. –