Ich habe eine jquery mobile Anwendung mit zwei "Seiten". Auf der ersten Seite ist eine Google-Karte, und auf der zweiten Seite ist eine Listenansicht von Gebäuden, wo jedes Listenelement eine ID mit ihm verbunden ist. Wenn der Benutzer auf ein Gebäude klickt, soll die Karte zu diesem Gebäude schwenken und einen Marker anzeigen. Allerdings ist eine der Macken von Jquery Mobile, dass ich aufrufen müssen google.maps.event.trigger(map, 'resize')
y map.panTo(somePosition)
nach der Seitenübergang erfolgt, sonst wird die Karte nicht richtig angezeigt. Ich bin in der jQuery Mobile tippen pageshow
Ereignis, um dies zu tun. Meine Frage ist, gibt es etwas entweder in der pageshow
Event-Handler-Argumente oder irgendeine Möglichkeit, etwas an den pageshow
Event-Handler-Argumente, die es mir ermöglichen, die ID des Listenelements zu identifizieren, das angeklickt wurde und den Seitenwechsel verursacht hat, so dass ich damit bestimmen kann, wohin die Karte geschwenkt werden soll?
Im Moment habe ich es in einer Runde über Art und Weise zu tun, wo ich in das Klick-Ereignis des ausgewählten Listenelements tippen, speichern Sie die ausgewählten Listenelement-ID in einer globalen Variablen und verwenden Sie dann, dass globale Variable später, wenn in der pageshow
Ereignisbehandler.
Also etwa so:
var selectedBuilding;
$('a.buildingSelect').click(function(e) {
e.preventDefault();
selectedBuilding = $(this).attr("data-buildingNum");
});
$('div').live('pageshow',function(event, ui){
if (ui.prevPage.attr('id') === "buildingSelect") {
google.maps.event.trigger(map, 'resize');
map.panTo(selectedBuilding);
}
});
Abgesehen davon, dass dies etwas unübersichtlich ist, besteht eines der Probleme darin, dass der Benutzer gar keine Gebäudenummer ausgewählt hat, z. B. wenn er auf der Seite mit der Gebäudeliste die Schaltfläche "Zurück" drückt. In diesem Fall wird die pageshow
Ereignisbehandlungsroutine wird immer noch ausgeführt, obwohl das ausgewählte Gebäude entweder nicht vorhanden ist, wenn der Benutzer zuvor kein Gebäude ausgewählt hat, oder die Karte schwenkt zum zuletzt ausgewählte Gebäude, wenn sie zuvor ein Gebäude ausgewählt haben, was eigentlich nicht beabsichtigt ist. Ich bin sicher, ich könnte einige zusätzliche globale Variablen für beide Event-Handler zur Verfügung stellen, um dies zu umgehen, aber es wäre ein wenig chaotisch. Idealerweise suche ich nach einer Möglichkeit, nur an die pageshow
Ereignis und kann aus der gebundenen Funktion ableiten, welche Gebäude-ID angeklickt wurde.
Ich bin noch relativ neu in jQuery und javascript im Allgemeinen, so bitte beachten Sie dies. Obwohl ich ein bisschen mit den Javascript-Debugging-Tools in Chrome gespielt habe, bin ich mir immer noch nicht ganz sicher, wie ich effektiv herausfinden kann, welche Informationen in der ui
Argument an die pageshow
Ereignisbehandlungsroutine, die meiner Meinung nach ein guter Anfang zur Lösung solcher Probleme wäre.