scrollTop在jquery执行之前触发

时间:2012-11-06 10:39:29

标签: javascript jquery scroll operator-precedence

我无法弄清楚这一点。我正在调用一个基于以下内容加载的函数:

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');

1 个答案:

答案 0 :(得分:0)

如果没有包装在$(document).ready()或类似的函数中,函数将在DOM加载之前触发,因此将跳过所有与DOM相关的脚本和$(window).scrollTop ()事件将触发。

如果你要整个批量包装并等待DOM加载它应该给你所需的功能