Подтвердить что ты не робот

Как получить Anchor Links для работы в JQuery Mobile?

JQuery Mobile решил рассматривать привязку ссылок как сортировку страниц. Однако это не очень хорошо, если у вас есть загрузка сообщений в блоге, у которых есть привязывающие ссылки на одну и ту же страницу (например, href= "# specs" ).

Есть ли способ отключить использование ссылок на привязку мобильного jquery на определенной странице, которую я знаю, я не буду использовать ее, чтобы использовать якорные ссылки, как они были предназначены, чтобы перейти к части страницы?

Мне нужно только решение для привязки ссылок на одной странице (например: href= "# specs" ).

спасибо

4b9b3361

Ответ 1

Вы можете попробовать добавить data-ajax="false" в тег привязки.

Связь без Ajax

Ссылки, указывающие на другие домены или имеющие rel= "external" , data-ajax = "false" или целевые атрибуты не будут загружаться с помощью Ajax. Вместо этого эти ссылки вызовут полное обновление страницы без анимированных переход. Оба атрибута (rel= "external" и data-ajax = "false" ) имеют такой же эффект, но различный смысловой смысл: rel= "external" следует использовать при подключении к другому сайту или домену, в то время как data-ajax = "false" полезно для простого выбора страницы в вашем домена от загрузки через Ajax. Из-за ограничений безопасности, структура всегда выбирает ссылки на внешние домены из Ajax поведение.

Ссылка - http://jquerymobile.com/demos/1.0.1/docs/pages/page-links.html

Ответ 2

Если вы похожи на меня, конвертируйте существующий сайт, и вы не хотите проходить через каждую страницу прямо сейчас. Вы можете добавить одну строку кода в свой заголовок, а весь ваш заголовок, а все существующие внутренние ссылки привязки получат добавленный тег data-ajax = "false".

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

$("a").each(function () { if(this.href.indexOf("#")>=0) $(this).attr("data-ajax",false); });

Это относится к вашему блоку $(document).ready(). Если у вас еще нет этого блока, вот весь блок.

$(document).ready(function() {
  $("a").each(function () { if(this.href.indexOf("#")>=0) $(this).attr("data-ajax",false); });
});

Надеюсь, это поможет. Это то же самое решение user700284, но автоматическим способом.

Ответ 3

Вы можете добавить следующий код в конец своей страницы:

 <script type="text/javascript">
     $('a.native-anchor').bind('click', function(ev) {
         var target = $( $(this).attr('href') ).get(0).offsetTop;
         $.mobile.silentScroll(target);
         return false;
     });
 </script>

И добавьте класс "native-anchor" в ваши якорные ссылки.

Это не полное решение, потому что кнопка "Назад" вашего браузера перенесет вас на предыдущую страницу, а не на позицию ссылки, но лучше, чем ссылки, которые не работают вообще.

Я нашел это решение здесь: jQuery Mobile Anchor Linking

Ответ 4

$(document).bind("mobileinit", function () {
    $.mobile.ajaxEnabled = false;
});

Ответ 5

Сначала вы должны поместить этот код в файл custom.js

$(document).bind('mobileinit', function () {
    $.mobile.loader.prototype.options.disabled = true;
    $.mobile.ajaxEnabled = false;
    $.mobile.linkBindingEnabled = false;
    $.mobile.loadingMessage = false;
});

Затем добавьте этот файл на свою веб-страницу до загрузки jquery mobile js. потому что событие 'mobilinit' запускается немедленно

Ответ 6

Спасибо. это решение работало для меня

<script>
  $(document).ready(function() {
    $("a").each(function() {
      if (this.href.indexOf("index.php") >= 0) $(this).attr("data-ajax", false);
    });
  });
</script>

Я заменил # на index.php, который является моим корнем в документе. Но это не работает для кнопки формы i.e input type="submit"