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 に答える