javascript - 页面加载后如何执行 jquery 动画滚动?

标签 javascript jquery twitter-bootstrap coffeescript

我在 Rails 4 中有一个 Bootstrap 3 导航栏,上面有一个 Logo 。当文档准备好后,它会运行:

$(document).ready ->
  $("html,body").animate
    scrollTop: 270
  , "slow"

这可以正确对齐浏览器中的顶部图像。

如果我单击导航栏中的 Logo ,它将滚动到页面顶部并显示以下代码:

  $("#home").click (e)->
    e.preventDefault()
    $("html,body").animate
      scrollTop: 270
    , "slow"

但是,如果我单击不同的导航栏项目(例如“关于我”),然后单击 Logo ,它会加载主页,但不会滚动到正确的位置。

如何确保每次加载页面时页面滚动都能可靠地发生,以便照片始终初始对齐?

谢谢!

更新:托德绝对正确,将“page:change”上的 .ready 更改为 .on 是解决此问题的关键。单击链接时,完成的内容将滚动到默认位置或向下滚动链接位置。谢谢!

$(document).on "page:change", (e)->
    if $("#intro").length
        e.preventDefault()
        $("html,body").animate
        scrollTop: 270
      , "slow"

        $("#home").click (e)->
            e.preventDefault()
            $("html,body").animate
                scrollTop: 270
            , "slow"


    $("#scroll-down-link").click (e)->
        e.preventDefault()
        $("html,body").animate
            scrollTop: 1300
        , "slow"

最佳答案

涡轮链接不会触发就绪事件,因此您必须使用“page:change”事件。很详细HERE 。它以这种方式工作是因为涡轮链接会覆盖正常的页面加载过程。

做:

$(document).on 'page:change', ->

非coffeescript版本

$(document).on('page:change', function() {


});

关于javascript - 页面加载后如何执行 jquery 动画滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27681615/

相关文章:

javascript - 如何使复选框禁用angular.js

javascript间隔

javascript - 如何使用 Javascript 和正则表达式删除变量内的 <style type ="text/css"> ... </style>

javascript - 从 Rails 设置 document.domain 的 DRY 方式

jquery - 具有自定义帖子类型的 Wordpress 3.3 自定义字段模板

javascript - css 不是 AngularJS 中现有元素的函数

具有编辑/删除模式的 PHP while 循环仅返回第一行中的 ID

css - Internet Explorer 中的 Bootstrap 下拉菜单

javascript - React 一直在重新渲染导航栏

javascript - 如何在 Laravel 中提交 PUT 方法表单而不重新加载页面?