zurück. Ich habe eine Google Maps App, die die Größe der Map div ändert, wenn sie zu groß ist. Das Problem ist, dass ich versuche, Jquerys animate zu verwenden und die Funktion zurückzugeben und ich muss zu den Google Maps auslösen, dass es in der Größe geändert wurde.Warten Sie, bis die Animation beendet ist, und geben Sie dann
Daher wird die Karte gezoomt und Grenzen vor dem Auslösen festgelegt, so dass es offsetting. und funktioniert nur richtig, wenn es ein zweites Mal ausgelöst wird.
function doResize() {
if ($("#map_div").width() > 600) {
$("#stores").hide(0, function(){
$("#map_div").animate({width: '500px'}, function(){
google.maps.event.trigger(G_MAP, 'resize');
$("#stores").fadeIn(1000);
});
});
}
}
ich nicht den Rest des Codes in dem Rückruf aus zwei Gründen setzen kann, ist ein, dass es eine große Funktion und ihr an zwei Stellen eingesetzt. Auch die Breite beträgt nur einmal über 600.
Beachten Sie, wie wenn Sie Newyork zuerst seinen Offset und nicht zentriert klicken, dann klicken Sie auf einen anderen Zustand und klicken Sie auf New York.
Edit:
Da ich die Animation nicht synchron machen und zu tun:
while($("#map_div").width() > 500) {
$("#map_div").width($("#map_div").width() - 1)
}
Ist gar nicht glatt, habe ich beschlossen, um die Animation zu Graben. Das Erzwingen, dass Jquery asynchron laufen muss, ist manchmal wirklich ein Untergang. Vor allem, wenn JavaScript selbst single-threaded ist, würden Sie denken, dass es Optionen zum Warten bis zum Ende gibt.
Es ist mein Verständnis, dass Javascript IMMER wartet, bis eine Funktion abgeschlossen ist und dass Jquery nur setIntervals & setTimeouts zu "fake" Multithreading enthält. Ich hätte gedacht, dass Jquery ein Backend hätte, um auf die Fertigstellung der Animationen zu warten. – ParoX
@BHare: * "Es ist mein Verständnis, dass Javascript IMMER wartet, bis eine Funktion abgeschlossen ist" * Richtig. * ". Ich hätte gedacht, dass Jquery ein Backend hätte, um auf die Fertigstellung der Animationen zu warten." * Es tut: Callbacks. Das ist der einzige Weg, wie Sie es mit aktuellen JavaScript-Implementierungen machen können. –