Отключить обновления строки адреса на ссылках? - PullRequest
2 голосов
/ 11 февраля 2012

При вызове changePage () с changeHash = false строка адреса не изменяется.Могу ли я вести себя идентично с якорными ссылками (например, <a href="#three">Blah</a>)?Я установил $ .mobile.hashListeningEnabled = false, но строка адреса все еще обновляется.Спасибо за помощь.

Ответы [ 4 ]

6 голосов
/ 11 февраля 2012

Это можно сделать, установив $.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>
2 голосов
/ 27 июля 2013

решил, что я отвечу на это изящным блоком кода, который вы можете поместить ДО того, как вы загрузите jquery mobile ПОСЛЕ того, как вы загрузите jquery, добавит дополнительный атрибут «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>

, и ваш URL останется как http://example.com вместо того, чтобы изменить на http://example.com # my-страница

1 голос
/ 26 ноября 2014

попробуйте: у меня работает в jQM 1.4.5

$.mobile.hashListeningEnabled = false;

При применении изменения страницы больше не изменяют адресную строку браузера, точно так же, как при использовании явных вызовов:

$.mobile.pageContainer.pagecontainer("change","tosomewhere.html",{ changeHash: false });
0 голосов
/ 12 ноября 2014

Хотя мне нравится решение Чеда Брауна для этого, я выбрал гораздо более простой и понятный подход, особенно для людей, плохо знакомых с jquery.

, поэтому я начинаю с создания скрипта функции и его можно разместить где угоднов вашем коде не обязательно находиться в определенном обработчике или обратном вызове.

<script>

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

</script>

, а затем в моих тегах привязки я просто вызову функцию, подобную этой

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