1

我想不通。我正在调用一个基于以下加载的函数:

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();
}

一切正常,除了scrollTop()在 jQuery 执行之前触发的调用。一旦scrollTop()执行,页面跳转到元素#this_id任何想法为什么?铬 22。

我也试过document.body.scrollTop = 0;, window.scrollTo(0,0), 和

$('html').animate({scrollTop:0}, 'slow');//IE, FF
$('body').animate({scrollTop:0}, 'slow');
4

1 回答 1

0

如果这没有包含在 $(document).ready() 或类似的文件中,该函数将在 DOM 加载之前触发,因此所有与 DOM 相关的脚本将被跳过并且 $(window).scrollTop() 事件会开火。

如果您要将所有内容打包并等待 DOM 加载,它应该会为您提供所需的功能

于 2012-11-06T10:46:17.500 回答