.ajaxStop Callback-Funktion, die mehrmals ausgeführt wird

8

Ich benutze jQuery, aber mein Problem ist, dass meine Seitenvariable mehrmals inkrementiert wird, auch wenn ich "page + = 1" in der Callback-Funktion .ajaxStop verwende, weil sie nach dem ersten Mal mehr als einmal ausgeführt wird es ist benutzt. Ich verwende diese Variable als einen Parameter, der an die Flickr-API übergeben wird, um eine bestimmte Seite mit Daten zu erhalten.

Was passiert, ist, dass beim ersten Aufruf der Funktion die Callback-Funktion einmal ausgeführt wird. Ich rufe dann dieselbe Funktion von einem "mehr" Knopf an, um den nächsten Satz von Ergebnissen zu erhalten, aber dieses Mal wird die Funktion zweimal aufgerufen, das nächste Mal dreimal, und so weiter ... Das bedeutet, dass ich Seite 1 bekommen kann, 2, 4, 7, 11, etc ...

Die AJAX-Funktionen, die ich anrufe, sind im Grunde die .getJSON-Funktion und einige zusätzliche .getJSON-Funktionen, die in ihrer Callback-Methode aufgerufen werden [in getPhotos (id)]

%Vor%

Irgendein Hinweis darauf, was ich falsch mache?

Sie können die gesamte Quelle hier sehen: Ссылка

    
Argote 23.11.2010, 10:10
quelle

3 Antworten

10

Was Sie sehen, ist, dass .ajaxStop() einen neuen -Ereignishandler anhängt und Sie fügen jedes Mal ein neues hinzu. Verschieben Sie es einfach nach draußen (aber immer noch in einen document.ready -Handler), so:

%Vor%

Die Alternative ist (wenn aus irgendeinem Grund #photos weggeblasen wird), belassen Sie es dort, wo es in der Funktion ist, und verwenden Sie .one() so:

%Vor%

Dies wird den Handler einmal ausführen, dann losbinden und den gewünschten Effekt geben ... aber solange das Element nicht irgendwo zerstört wird (es klingt nicht wie es ist) kleben Sie es einmal draußen fest, ohne Grund mach extra Arbeit.

    
Nick Craver 23.11.2010, 10:15
quelle
1

Sie binden die ajaxStop jedes Mal neu, wenn Sie weitere Details anfordern.

Verschieben Sie einfach die Ereignisbindung außerhalb von getUserId und führen Sie sie einmal beim Laden der Seite aus.

%Vor%     
Matt 23.11.2010 10:16
quelle
0

Überprüfen Sie die Länge von $ ("# Fotos"). Länge, Ihre Seite wird für jedes Element in dieser Liste erhöht

    
chrisp_68 23.11.2010 10:13
quelle

Tags und Links