【问题标题】:scrollTop fires before jquery executes在 jquery 执行之前触发 scrollTop
【发布时间】:2012-11-06 10:39:29
【问题描述】:

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

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 任何想法为什么?铬 22。

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

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

【问题讨论】:

  • 你是在dom准备好后调用这段代码吗?即包装在这样的函数中(简写语法): $(function() { // DOM 准备好后要做的事情; });
  • 它被包裹在一个 $(document).ready(function{ //script });

标签: javascript jquery scroll operator-precedence


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-30
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2012-04-05
    • 2011-06-13
    • 1970-01-01
    相关资源
    最近更新 更多