我有一個帶有兩個「頁面」的jquery移動應用程序。第一頁是Google地圖,第二頁是建築物的列表視圖,其中每個列表項都有一個與其關聯的標識。當用戶點擊建築物時,地圖就是爲了平移到該建築物並顯示一個標記。然而,jquery mobile的一個怪癖是我必須在之後調用google.maps.event.trigger(map, 'resize')
和map.panTo(somePosition)
發生頁面轉換,否則地圖會顯示出怪異。我正在使用jQuery Mobile pageshow
事件來執行此操作。我的問題是,pageshow
事件處理程序參數中是否有任何東西,或者有什麼方法將某些事物附加到pageshow
事件處理程序參數中,這些參數將允許我確定導致頁面轉換首先被點擊的列表項的id ,所以我可以用它來確定在哪裏平移地圖?jQuery Mobile獲取頁面轉換後導致頁面轉換的已點擊項目的id
此刻,我不得不圍繞某種方式做到這一點,在那裏我點擊所選列表項的單擊事件,將選定的列表項ID存儲在全局變量中,然後使用該事件全局變量稍後在pageshow
事件處理程序中。
因此,像:
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);
}
});
除了有點亂,與此的一個問題是,如果用戶沒有選擇樓號可言,例如,當他們按「回'按鈕在建築物列表頁面上。在這種情況下,pageshow
事件處理程序仍然會執行,但如果用戶以前沒有選擇建築物,則選定的建築物不存在,或者如果選擇的建築物已選擇,將導致地圖移動到最後的以前的建築,這實際上並不是預期的行爲。我確信我可以爲這兩個事件處理程序提供一些額外的全局變量來編碼,但這會有點混亂。理想情況下,我正在尋找的是一種方法,只需綁定到pageshow
事件,並從綁定的函數內能夠派生出哪個建築物ID被點擊。
我對jQuery和JavaScript一般還是比較新的,所以請記住這一點。儘管我在Chrome中使用了javascript調試工具,但我仍然不確定如何有效地找到ui
參數pageshow
事件處理程序中提供的信息,我想對於解決這樣的問題將是一個好的開始。
你能否詳細說明了如何福利局/爲什麼我需要摧毀「其他」活pageshow處理程序? – 2011-05-25 00:51:44
對不起,我有時會說愚蠢的事情。這就是所謂的死不滅,我編輯。 – Milimetric 2011-05-25 00:56:32
我已經接受了這個的答案,而不是我自己的,因爲你已經做了所有的跑腿。 – 2011-05-25 04:12:17