2012-08-01 42 views
0

我試圖在導航工具中使用導航工具中的jQuery Mobile的Select菜單。它需要處理內部和外部鏈接。綁定到change可以使用$.mobile.selectmenu()小部件來獲取選定的鏈接,該鏈接已使用URL和地區狀態的自定義數據位構建。然後鏈接被動態添加到文檔中,並調用.trigger('click')在動態添加的鏈接上觸發('點擊')不會傳播到JQM中的外部鏈接

http://jsfiddle.net/wZNMz/

不管結合事件,返回值,事件傳播角力的排列和屬性外部鏈接將無法正常工作。內部鏈接工作得很好。

參照jquery.mobile.navigation.js source觸發點擊應該按預期工作,假設[rel='external']匹配啓用默認URL處理。請注意,init上的插件條鏈接出<option>標記,要求添加鏈接時發生的所有冒昧行爲,並觸發單擊<select>更改。

骯髒,明顯的黑客是設置window.location當外部和完成。這確實有用,但我不明白爲什麼它有必要訴諸於此。任何想法或見解都值得讚賞!

回答

0

創建一個鏈接並觸發點擊它似乎比使用window.location(這是因爲這個特定原因)轉發用戶到一個新頁面更加hacky。對於內部鏈接,您可以通過$.mobile.changePage()路由請求。這裏有一個例子:

$('#mobile-nav').bind('change', function(e) { 
    var nav_to = $(this).selectmenu('selected'); 

    if (nav_to.data('locality') === false) { 
     //this is external, so use window.location 
     window.location = nav_to.data('item-url'); 
    } else { 
     //this is internal, so use $.mobile.changePage() 
     $.mobile.changePage(nav_to.data('item-url'), { 
      //here you can set options such as transition type and direction 
     }); 
    } 
}); 

這裏是$.mobile.changePage()的文檔:http://jquerymobile.com/demos/1.1.1/docs/api/methods.html

+0

你是對的 - 不知道我要去的但這種方法適合我的需要良好。謝謝! – dalethedeveloper 2012-09-11 18:40:12