关于scrollTop的使用

问题描述

在我们angular项目中使用$('.dialog_center').scrollTop(0);未能将滚动条置顶,这是个弹框的滚动条

问题出现的环境背景及自己尝试过哪些方法

这个元素是一个弹框,然后使用定时器解决了,可以将其置顶,但这个js加载方式有些不懂,哪个大神可以解答一下,万分感谢

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

    $timeout(function(){
        $('.dialog_center').scrollTop(0);
    })

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.8k
2 个回答

timeout 会添加到任务队列,延迟执行。
可能是你那个弹框有个动画效果,导致 $('.dialog_center') 这个元素第一时间没有拿到。你可以试试将 timeout拿掉后把 $('.dialog_center') 打印出来看是否为空。

你的问题流程并没有描述完整,只能靠猜测了...

  1. 使用$('.dialog_center').scrollTop(0)没生效,大概率是因为此时页面上还没有class为.dialog_center这个对象,其原因是页面渲染dom的过程还未结束。
  2. 放在timeout中,它会在当前进程空闲(之前Angular应该在进行Dom渲染工作)后马上执行,此时已经可以找到所有页面元素,能直接操作,故能达到你期望的效果
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题