Я видел много связанных вопросов, но ни один из них напрямую не касался этой проблемы ...
У меня очень большой сайт, для которого я создаю мобильную тему jquery. Хотя я не контролирую контент, и когда он создавался для настольных компьютеров, для перемещения по позициям на странице использовалось много тегов #anchor.
Я исправил это для ссылок на той же странице со следующим (jqm является заменой для объекта jquery, мне нужно очистить ссылки $ / jqm ...
Это связано с событием mobileinit и работает, если на странице есть якоря:
jqm('div').live('pagebeforecreate', function(e, data)
{
if(location.hash.length>0){
if($(location.hash).length>0){
if ($(location.hash).attr("data-role") != "page")
{
$.scrollTo(location.hash, 800);
};
}
}
//Check to see if there are any internal links on page
$("a[href*='#']").each(function()
{
//make sure they aren't legit jqm pages
if($(this.hash).length){
if ($(this.hash).attr("data-role") != "page")
{
//Disable jqm behavior, instead scroll down the page
$(this).click(function(event)
{
event.preventDefault();
$.scrollTo(this.hash, 800);
return false;
});
};
}
else {
$(this).attr('data-ajax','false');
}
});
});
});
Так что, если пользователь находится на foo.php и есть ссылка на #bar и #baz, он будет приятно прокручивать их, зная, что они не являются data-role = "page"
Но если пользователь находится на foo.php и на этой странице есть ссылка на qux.php # bar, он задыхается, потому что когда страница загружается, он пытается перейти на changePage к #bar, но #bar на qux. php на самом деле просто id для обычного старого div.
Мне кажется, что что-то вроде вышеупомянутого решения на странице также будет работать для этого, но, возможно, мне нужно было бы привязаться к фактической загрузке страницы, а не к странице до создания?