我试图在导航工具中使用jQuery Mobile的选择菜单作为导航工具。它需要处理内部和外部链接。绑定到change
允许使用$.mobile.selectmenu()
小部件来获取所选链接,该链接是使用URL和位置状态的自定义数据位构建的。然后将链接动态附加到文档中,并调用.trigger('click')
。
无论绑定事件,返回值,事件传播争论和属性的排列如何,外部链接都不起作用。内部链接工作正常。
参考jquery.mobile.navigation.js source触发点击应该按预期工作,假设[rel='external']
匹配以启用默认网址处理。请注意,插件会在初始化时从<option>
标记中删除链接,这需要添加链接并触发点击<select>
更改。
肮脏而明显的黑客攻击是在外部设置window.location
并完成。这确实有效,但我不明白为什么有必要采取这种做法。任何想法或见解都表示赞赏!
答案 0 :(得分:0)
创建链接并触发点击它似乎比使用window.location
(由于这个特定原因,将用户转发到新页面)更加愚蠢。对于内部链接,您可以通过$.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