Это известная проблема для iScroll, и кажется, что это происходит только в iOS5, где меню полностью перестает работать. Все мои подссылки в iScroll являются хеш-якорями. У кого-нибудь есть обходной путь для этого?
Поддержка изменения хэша URL-адреса iScroll
Ответы (1)
Я справился с этим, перехватив сами якорные ссылки и заменив их вызовами scrollToElement
.
// Hijack hash anchors and scroll to them
$('a').click ( function (e) {
var id = $(this).attr('href');
if (id.substr(0,1) == '#') {
e.preventDefault();
setTimeout( function() {
scroller.scrollToElement ( id, 0 );
}, 0);
return false;
} else {
return true;
}
});
Этот код должен перехватывать только ссылки, начинающиеся с #
. Затем он обрабатывает scrollToElement
в setTimeout
, что исправляет некоторые другие прерывистые ошибки. Это хорошо работает с моей стороны, если ваши якоря правильно названы с идентификатором. Если вы используете атрибуты name
вместо атрибутов id
, вам потребуется переписать их.
Этот код скопирует атрибуты name
и поместит их в атрибут id
, если он пуст. Хотя, скорее всего, вам это не понадобится.
$('a').each (function (i, e) {
var n = $(e).attr('name');
var id = $(e).attr('id');
if ( typeof id == 'undefined' || id === null || id === '') {
$(e).attr('id', n);
}
});
person
James Tomasino
schedule
24.01.2013