这是iScroll的一个已知问题,它似乎只发生在iOS5中,菜单完全停止工作。 iScroll中的所有子链接都是哈希锚点。有没有人有解决方法呢?
答案 0 :(得分:2)
我处理它的方式是劫持锚链接本身并用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
,修复了其他一些间歇性错误。只要您的锚点使用id正确命名,它就能在我的结束时运行良好。如果您使用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);
}
});