我有在窗口加载、滚动和调整大小时触发的代码:
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)
})
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/