动态添加的链接上的触发器(“单击”)不会传播到JQM中的外部链接

时间:2012-08-01 19:01:09

标签: javascript jquery jquery-mobile javascript-events

我试图在导航工具中使用jQuery Mobile的选择菜单作为导航工具。它需要处理内部和外部链接。绑定到change允许使用$.mobile.selectmenu()小部件来获取所选链接,该链接是使用URL和位置状态的自定义数据位构建的。然后将链接动态附加到文档中,并调用.trigger('click')

http://jsfiddle.net/wZNMz/

无论绑定事件,返回值,事件传播争论和属性的排列如何,外部链接都不起作用。内部链接工作正常。

参考jquery.mobile.navigation.js source触发点击应该按预期工作,假设[rel='external']匹配以启用默认网址处理。请注意,插件会在初始化时从<option>标记中删除链接,这需要添加链接并触发点击<select>更改。

肮脏而明显的黑客攻击是在外部设置window.location并完成。这确实有效,但我不明白为什么有必要采取这种做法。任何想法或见解都表示赞赏!

1 个答案:

答案 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