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: Ссылка
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:
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:
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.
Tags und Links javascript jquery callback flickr