繁体   English   中英

使jQuery代码在窗口加载,滚动和调整大小时仅触发一次?

[英]Make jQuery code in window load, scroll and resize only fire once?

我有在窗口加载,滚动和调整大小时触发的代码:

jQuery(window).bind("load scroll resize", function() {
   // do stuff on every event

   // do something else only once

});

但是我希望代码的一部分仅触发一次。 如何才能做到这一点?

更新-我已经在代码中定义了一个变量,该变量可以重新触发理想的id,就像在重新触发的代码中使用一样。

看来这是您真正要寻找的东西:

jQuery(document).ready(function () {
    var foo = "bar"; //define on load
    jQuery(window).on("scroll resize", function () {
        jQuery("body").append(foo); // used on scroll/resize events
    })
})

小提琴 (您可以调整小提琴窗口的大小以使用定义的变量查看事件的工作)


如果您还希望滚动/调整大小事件在初始加载时发生,则可以执行以下操作:

jQuery(document).ready(function () {
    var foo = "bar"; //define on load
    var myFunc = function () {
        jQuery("body").append(foo); // used on scroll/resize events
    }
    myFunc();
    jQuery(window).on("scroll resize", myFunc)
})

小提琴

可以使用 -癫痫警告:) 测试滚动的另一个示例

同样,在我的示例中,我也使用jQuery()只是因为您这样做了。 除非您有某种冲突,否则大多数人都喜欢使用快捷键$()


如果我的示例代码有任何混淆,您上面的代码(注释)将如下所示:

jQuery(document).ready(function () {
    // do something else only once
    var myFunc = function () {
        // do stuff on every event
    }
    myFunc(); //remove this if you don't want it called on initial load
    jQuery(window).on("scroll resize", myFunc)
})

基本上在上面的示例中,在初始加载时,您的函数和事件将被声明,初始化和调用。 然后,每次滚动和调整大小事件发生时,都会调用该函数。

var some_var = 1;

$(window).on("load scroll resize", function() {
   // do stuff on every event
});

$(window).one("load scroll resize", function() {
   // do stuff only once
});

那将只执行一次代码的一部分,每次执行另一部分。 由于some_var在两个块的外部声明,因此在两个内部都可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM