javascript - 滚动到 Rails 4 应用程序中的顶部 jQuery

标签 javascript jquery css ruby-on-rails ruby-on-rails-4

我已经学习了各种关于创建淡入/淡出 jQuery scrollTo 函数的教程。但是似乎与 css display:none 有一些冲突,因为它没有显示在页面上,如果我删除 css display:none 它会显示 div,但显然 fadeIn/Out 不起作用。

应用程序.js

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require_tree .

    //Check to see if the window is top if not then display button
    $(window).scroll(function(){
        if ($(this).scrollTop() > 600) {
            $(".scrollToTop").fadeIn(1000)
        } else {
            $(".scrollToTop").fadeOut(1000);
        }
    });

    //Click event to scroll to top
    $(".scrollToTop").click(function(){
        $('html, body').animate({scrollTop : 0},500);
        return false;
    });

其他有效的js代码

$(window).scroll(function() {
      if ($(".navbar").offset().top > 50) {
        $(".navbar-fixed-top").addClass("top-nav-collapse");
        $(".navbar-transparent").addClass("navbar-color");
        $(".navbar-nav").addClass("navbar-nav-dark");
        $(".logo_dark").show();
        return $(".logo_light").hide();
      } else {
        $(".navbar-fixed-top").removeClass("top-nav-collapse");
        $(".navbar-transparent").removeClass("navbar-color");
        $(".navbar-nav").removeClass("navbar-nav-dark");
        $(".logo_light").show();
        return $(".logo_dark").hide();
      }
    });

CSS

.scrollToTop {
    margin: 0;
    position: fixed;
    bottom: 8.5%;
    right: 0;
    z-index: 100;
    display: none;
    text-decoration: none;
    color: #ffffff;
    background-color: rgba(100, 193, 151, .7);
    padding: 10px 20px 10px 10px;
    font-size: 12px;
}
.scrollToTop:hover {
    background-color: rgba(100, 193, 151, 1);
    color: #ffffff;
    text-decoration: none;
}

HTML

<a href="#" class="scrollToTop"><i class="fa fa-angle-up"></i> Back to top</a>

最佳答案

这个问题几乎可以肯定是因为浏览器在 DOM 完成加载之前就开始处理你的 js,所以我猜你的 .scrollToTop anchor 接近你的 HTML 的末尾。

你应该做的是在文档准备好后绑定(bind)事件:

$(document).ready(function() {
    $(window).scroll(function(){
        if ($(this).scrollTop() > 600) {
            $(".scrollToTop").fadeIn(1000)
        } else {
            $(".scrollToTop").fadeOut(1000);
        }
    });

    //Click event to scroll to top
    $(".scrollToTop").click(function(){
        $('html, body').animate({scrollTop : 0},500);
        return false;
    });
}

(您应该为当前运行良好的代码执行此操作,否则您可能会发现某些计算机速度较慢的用户有更多未绑定(bind)到其对象的事件)

旁注:您不应该真正将 javascript 放入您的 application.js 中,而是创建一个新 Assets ,如“init.js”并告诉 application .js 来包含它。

关于javascript - 滚动到 Rails 4 应用程序中的顶部 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29466417/

相关文章:

html - 在真实表格 td 中使用带有显示表格单元格的 div

javascript - 如何在 Angular JS 中使用 ng-model 进行绑定(bind)

javascript - 如何为 Bootstrap scrollspy 添加平滑的滚动过渡

javascript - 如何复制整个 html 元素?

javascript - Select2 多选奇怪的叠加

javascript - 为什么我的 div 只在我添加 isopen=true 的属性时才动画,但在我将值更改为 false 时却不动画

html - float 图像旁边的嵌套列表项的缩进

javascript - 如何更改 Koa 的非定义路由的 http 状态码

javascript - 一切正常,但脚本中有 LAG?

html - 如何在CSS中进行线性闪避?