禁用锚链接上的位置栏更新?

时间:2012-02-11 10:28:42

标签: jquery-mobile

使用changeHash = false调用changePage()时,位置栏不会更改。 我可以与锚链接具有相同的行为(例如<a href="#three">Blah</a>)吗?我设置$ .mobile.hashListeningEnabled = false,但位置栏仍然更新。 谢谢你的帮助。

4 个答案:

答案 0 :(得分:6)

可以通过设置$.mobile.changePage.defaults.changeHash = false;

来完成

示例代码:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Page Title</title> 

    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script>
        $(document).bind("mobileinit", function(){
            $.mobile.changePage.defaults.changeHash = false;
        });
    </script>
    <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
</head> 
<body> 

<div data-role="page">

    <div data-role="header">
        <h1>Page Title</h1>
    </div><!-- /header -->

    <div data-role="content">   
        <a data-role="button" href="#page2">Go to page2</a>
    </div><!-- /content -->

</div><!-- /page -->

<div data-role="page" id="page2">

    <div data-role="header">
        <h1>Page Title</h1>
    </div><!-- /header -->

    <div data-role="content">   
        <p>Page content goes here.</p>      
    </div><!-- /content -->

</div><!-- /page -->

</body>
</html>

答案 1 :(得分:2)

我想用一个漂亮的代码块来回答这个问题,你可以在加载jquery之后加载jquery mobile,在额外的属性'data-change-hash'添加到任何链接标记,这样该位置就不会变化

    $('a[data-change-hash="false"]').on('click',function(e) {
        $.mobile.changePage($(this).attr('href'),{'changeHash':false});
        e.preventDefault();
    });  

将使您能够执行此操作

<a href='#my-page' data-change-hash="false">Test Me!</a>

,您的网址将保持http://example.com,而不是更改为http://example.com#my-page

答案 2 :(得分:1)

尝试一下:它适用于jQM 1.4.5

$.mobile.hashListeningEnabled = false;

应用后,页面更改不会再改变浏览器的地址栏,就像使用显式调用时一样:

$.mobile.pageContainer.pagecontainer("change","tosomewhere.html",{ changeHash: false });

答案 3 :(得分:0)

虽然我喜欢Chad Brown的解决方案,但我还是采用了一种更简单易懂的方法,专门针对jquery新手。

所以我首先创建一个函数脚本,并且可以放在代码中的任何位置,不需要在特定的处理程序或回调中。

<script>

    function goTo(pageID,track){
         $.mobile.pageContainer.pagecontainer('change','#'+pageID, {changeHash: track});
    }

</script>

然后在我的锚标签中我会像这样调用函数

<a href="javascript:goTo('mypageID',false);">New Trip</a>