我无法弄清楚这一点。我正在调用一个基于以下内容加载的函数:
var option = self.document.location.hash.substring(1);
if(option != ''){
subshow(option);
}
function subshow(this_id){
if($('#'+this_id).hasClass('selected') == false){
$('.page').wrap('<div class="click_off" onclick="javascript:deselect_block(event);" />');
$('#'+this_id).children().show();
$('#'+this_id).addClass('top');
$('#'+this_id).addClass('selected');
$(window).scrollTop();
}
除了在jQuery执行之前触发的scrollTop()
调用之外,一切正常。一旦scrollTop()
执行,页面就跳转到元素#this_id
任何想法为什么? Chrome 22。
我还尝试了document.body.scrollTop = 0;
,window.scrollTo(0,0)
和
$('html').animate({scrollTop:0}, 'slow');//IE, FF
$('body').animate({scrollTop:0}, 'slow');
答案 0 :(得分:0)
如果没有包装在$(document).ready()或类似的函数中,函数将在DOM加载之前触发,因此将跳过所有与DOM相关的脚本和$(window).scrollTop ()事件将触发。
如果你要整个批量包装并等待DOM加载它应该给你所需的功能