javascript - 使窗口加载、滚动和调整大小中的 jQuery 代码只触发一次?

标签 javascript jquery jquery-events

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

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

   // do something else only once

});

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

更新 - 我已经在重新触发的代码中定义了一个变量,理想情况下我喜欢在重新触发的代码中使用它。

最佳答案

看来这才是您真正要找的:

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
    })
})

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


如果您还希望在初始加载时发生滚动/调整大小事件,您可以这样做:

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)
})

Fiddle

Another example you can test scroll with - 癫痫警告:)

另外,我在示例中使用了 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)
})

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

关于javascript - 使窗口加载、滚动和调整大小中的 jQuery 代码只触发一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18255719/

相关文章:

javascript - Angular.js Controller 在 View 之后加载

javascript - folktale 有 IO monad 吗?

javascript - 如何将递归应用于两层深度的链表?

javascript - 视差滚动,带有滚动的动画而不是在滚动时激活

javascript - Jquery 事件在 ajax 调用后绑定(bind)两次

javascript - 获取网格状系统中最接近的正方形

jquery - 如何遍历 json 响应?

javascript - 为什么使用 Jquery 我的变量不会出现在文本框中?

javascript - 使用对象方法作为回调

javascript - 单击 jQuery 中的按钮刷新整个浏览器或所有选项卡