【问题标题】:Can't get this statement to work无法使此语句起作用
【发布时间】:2017-04-27 12:05:05
【问题描述】:

我希望我的元素仅在 offset().top 大于 300 像素时显示位置固定

这是我的代码:

$(window).scroll(function() {   
    if ($(window).offset().top > 300) {
        $(".uparrow").css('position','fixed');
    }
    else {
        if ( $(window).offset().top < 300) {
            $(".uparrow").css('display','none');
        }
    }
})

【问题讨论】:

  • 请包含 HTML,以及一个 sn-p/fiddle
  • 我无法发布代码,但我在控制台 imgur.com/a/o7EPG 中也遇到了一些错误
  • 小心,你的滚动位置可能正好是300,所以用&lt;= 300检查一下

标签: jquery css if-statement elements


【解决方案1】:

您的浏览器控制台就是您的朋友。这会立即告诉你哪里出了问题。在这种情况下,您会在控制台中收到错误 Uncaught TypeError: Cannot read property 'top' of undefined - 这将引导您解决问题。

你需要$(window).scrollTop() 而不是$(window).offset().top

您也不需要第二个 if 语句。这在您之前的 else 语句中涵盖了

I.E

$(window).scroll(function()
   {   
     if ( $(window).scrollTop() >= 300)    
     {
         $(".uparrow").css('display','inline-block');
         $(".uparrow").css('position','fixed'); // <- this is pretty pointless given you never change it when less than 300 pixels.
         console.log('I am fixed');
     }
     else 
     {
       $(".uparrow").css('display','none');
       console.log('I am hidden');
     }
  })

【讨论】:

  • 谢谢,现在我没有收到错误,但我的元素仍然显示:无
  • 添加了一点点 - 你从来没有真正改变显示 css,你只是添加了一个位置。没有实际的切换。尽管上面的代码有效,但不确定您要实际实现的目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多