Jquery mobile - onhashchange问​​题

时间:2011-11-16 20:59:55

标签: javascript jquery jquery-mobile hashchange

我在我的应用中使用$.mobile。我必须创建自己的路由系统。 我在hashchange上绑定了观察者,并从location.hash中提取了有趣的数据。 我遇到了问题 - 如果jQuery.mobile有斜杠(例如从location.hash'lalal/#controller/action/param''lalal/controller/action/param'在黄色框中显示$.mobile,则Error Loading Page会删除哈希符号data-role='page' {1}}。

我首先试图取消绑定现有的“hashchange”,但是页面没有自动加载(我需要的)。

如何防止散列更改,但jQuery必须仍然自动加载页面(例如,通过在Router.load元素中声明的ID)? 。下面是我的路由器类的一个片段:(location.hash不会更改__construct: function() { var that = this; $( window ).bind( "hashchange" , function( e ) { //e.stopImmediatePropagation() that.load( this.location.hash ); }); }

{{1}}

2 个答案:

答案 0 :(得分:6)

我相信你正在与Beta 3中添加的jQuery Mobile中的“pushState”插件作斗争(我相信)。您可以使用以下代码禁用此插件(在包含jQuery Mobile JavaScript文件之前使用):

$(document).on('mobileinit', function () {
    $.mobile.pushStateEnabled = false;
});

在此处查看文档(请注意“pushState插件”部分):http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html

答案 1 :(得分:0)

在包含jquery和 之后的中包含jquery.mobile-1.x.y.js添加:

<script>
$(document).bind("mobileinit", function(){
        $.mobile.pushStateEnabled = false;
        $.mobile.ajaxEnabled = false;
        $.mobile.hashListeningEnabled = false;
});
</script>