我的猜测是您正在为标签转换设置动画?我遇到了同样的问题,每次点击页面滚动都会跳回顶部。
我在 jquery 源码中找到了这个:
// Show a tab, animation prevents browser scrolling to fragment,
果然,如果我有这个:
$('.tab_container > ul').tabs();
$('.tab_container > ul').tabs({ fx: { height: 'toggle', opacity: 'toggle', duration: 'fast' } });
我的代码跳到顶部并且很烦人(但有动画)。如果我把它改成这样:
$('.tab_container > ul').tabs();
//$('.tab_container > ul').tabs({ fx: { height: 'toggle', opacity: 'toggle', duration: 'fast' } });
没有标签动画,但标签之间的切换很流畅。
我找到了一种让它向后滚动的方法,但这不是一个正确的解决方法,因为在单击选项卡后浏览器仍会跳转到顶部。滚动发生在事件 tabsselect 和 tabsshow 之间,因此下面的代码会跳回您的选项卡:
var scroll_to_x = 0;
var scroll_to_y = 0;
$('.ui-tabs-nav').bind('tabsselect', function(event, ui) {
scroll_to_x = window.pageXOffset;
scroll_to_y = window.pageYOffset;
});
$('.ui-tabs-nav').bind('tabsshow', function(event, ui) {
window.scroll(scroll_to_x, scroll_to_y);
});
我将发布我取得的更多进展。