【问题标题】:combine onLoad, onResize and onRefresh in jquery在 jquery 中结合 onLoad、onResize 和 onRefresh
【发布时间】:2014-08-21 03:32:58
【问题描述】:

我希望网站在页面加载和调整大小时执行某个 jquery 脚本(它允许我将垂直菜单的高度拉伸到浏览器窗口的高度)。

所以我写了一个这样的jquery:

jQuery(document).ready(function ($) {
$(window).on('resize', function() {
<code to execute>
}).trigger('resize');
});

我的问题是,当有人加载页面或调整页面大小时,这段代码运行良好,但当有人点击刷新按钮时,它就不起作用了。在这种情况下,我怎样才能使代码也能正常工作? 提前感谢您的帮助。

【问题讨论】:

    标签: javascript jquery html load refresh


    【解决方案1】:

    事实证明,我在自己的问题中描述的方式非常正确。它以这种方式运行得非常好,即使是 onRefresh。使我的脚本无法正常工作的原因是,我使用的变量之一在页面加载完成后会发生变化,因此当我点击“刷新”时,它会给出与开始时不同的值。 因此,对于 stackoverflow.com 的每一位用户,请注意无论何时要设置事件 onLoad、onResize 和 onRefresh,最简单和最好的方法是:

    jQuery(document).ready(function ($) {
    $(window).on('resize', function() {
    <code to execute>
    }).trigger('resize');
    });
    

    事实上,glortho 的建议是可行的,但那是使用另一个变量,在我看来,这会使整个事情变得更加多余。 感谢大家的帮助和阅读。

    【讨论】:

      【解决方案2】:
      jQuery(document).ready(function ($) {
          function Resize(){
              $(window).on('resize', function() {
                  <code to execute>
              }).trigger('resize');
          }
      });
      

      请随时致电Resize()。加载时或点击时。

      【讨论】:

        【解决方案3】:

        试试这个:

        var myFn = function() { console.log('hello world') };
        
        jQuery(document).ready(function ($) {
          myFn();
          $(window).on('resize', function() {
            myFn();
          });
        });
        

        【讨论】:

        • 请注意,您可能不想在这里污染全局命名空间,但这只是一个简单的示例。
        • 谢谢你,@glortho。作为一个原则,这是可行的,但它不适用于我的脚本。好像变数太多了。例如,如果我编写了整个脚本并最终发出警报,则警报消息仅适用于 onLoad 而不是 onResize。如果我只写一个变量,效果很好;如果我只添加一个变量,即使没有任何计算,resize 事件也会停止工作。有人可以帮我吗?!?
        猜你喜欢
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-05
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多