【问题标题】:Can't Get Header to Resize When Scrolling Down Using JQuery使用 JQuery 向下滚动时无法调整标题大小
【发布时间】:2013-07-12 16:43:55
【问题描述】:

一直在尝试使用此处的信息来减小滚动标题的大小:

jQuery - Sticky header that shrinks when scrolling down

但是,虽然标题保持固定,但当我向下滚动时它并没有缩小。

这是我的 js 文件中的内容:

$(function(){
  $('#header').data('size','big');
});

$(window).scroll(function(){
  if($(document).scrollTop() > 0)
{
    if($('#header').data('size') == 'big')
    {
        $('#header').data('size','small');
        $('#header').stop().animate({
            height:'40px'
        },600);
    }
}
else
  {
    if($('#header').data('size') == 'small')
      {
        $('#header').data('size','big');
        $('#header').stop().animate({
            height:'120px'
        },600);
      }  
  }
});

有人可以帮我弄清楚为什么它不起作用吗?

我正在使用最新的 Wordpress,并将脚本放入主题的函数文件中 - 不知道这些信息是否有帮助,但只是想提供尽可能多的信息来解决我的问题。

【问题讨论】:

    标签: javascript jquery html wordpress scrolltop


    【解决方案1】:

    快速浏览您的网站并尝试创建一个简单的函数来执行所需的更改...

    $(window).scroll(function(){
        if($(window).scrollTop > 0){
            $('header').css({
                height:"40px"
            })
        }
        else{
            $('header').css({
                height:"120px"
            })
        }
    })
    

    我在 FF 上使用暂存器执行此操作,并收到一个错误,在我看来,这暗示 jquery 最初没有加载!

    尝试在html head 部分添加以下行。

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    

    【讨论】:

    • 由于我使用的是 Wordpress,我认为它会自动加载 jquery - 在我的 html 头部分中,它显示它在 wp-includes 文件夹中。但是只是为了看看,我按照您的建议做了,并且标题确实缩小了。现在对如何加载 jquery 有点困惑,因为我认为 WP 会自动加载。有什么建议吗?
    • 查看您的站点加载的 jquery 文件,它还包括 .noConflict() 行...现在,不要引用我的话:据我了解意味着您必须在代码中使用jQuery 代替$(即只需将每个$ 更改为jQuery)。您还可以从您加载的 jquery 文件中删除该行,然后它应该按原样工作(即使用 $)!我很想知道这是否能解决问题,但我不能保证!!
    • $ 替换为jQuery 有效。但我想知道这是否是最好的解决方案?
    • $ 只是一个库,通常是jQuery 库。因此,通常情况下,两者($jQuery)的含义完全相同,您可以互换使用它们而不会出现任何问题。问题是 $ 可以被其他库以及 jQuery 使用但是一次只能使用一个库; .noConflict() 命令/函数 unbinds $ 来自 jQuery 库,所以在你的情况下 $ 没有任何意义!您可以删除 .noConflict() 行,然后您就可以使用 $ 但老实说,没有真正需要...
    【解决方案2】:

    控制台报错:

    Uncaught TypeError: Property '$' of object [object Object] is not a function 
    

    我会尝试将您的代码包含在 -> jQuery(document).ready(function ($) { }

    *重要的部分是()里面的$。

    jQuery Uncaught TypeError: Property '$' of object [object Window] is not a function

    【讨论】:

    • 尝试了您的建议,但仍然无效。感谢您抽出宝贵时间提供帮助。
    • 我刚刚看了你的代码。控制台错误在第 1 行被调用。现在它在第 5 行被调用。这向我表明,如果你将整个代码块放在 jQuery(document).ready(function ($) {} 中,它将起作用。问题是 wordpress 与 jQuery 冲突。所以你必须将 $ 重新分配给 jQuery。这就是jQuery(document).ready(function ($) {} 所做的
    • 再次感谢您的帮助。在您的回复和 Steven 的回复之间,我结束了将 $ 替换为 jQuery 并且它有效,现在我不再收到错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2021-03-21
    • 2023-04-01
    • 2014-05-05
    • 2023-03-05
    • 2016-04-25
    相关资源
    最近更新 更多