让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
});
然而,我希望代码的一部分只启动一次。如何做到这一点?
UPDATE-我已经在重新启动的代码中定义了一个变量,理想情况下我喜欢在重新启动代码中使用它。
这似乎是您真正想要的:
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
您可以使用测试滚动的另一个示例-癫痫警告:)
另外,我在示例中使用了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
是在这两个块之外声明的,因此它在这两个中都可用。
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 窗口大小调整仅有效一次
- 只添加一次调整大小事件处理程序
- 让jQuery代码在窗口中加载,滚动和调整大小只触发一次
- jQuery窗口大小调整触发只触发一次
- Fire脚本一次与JQuery窗口大小调整和媒体查询
- 火灾调整事件一次不基于时间
- 在 jointjs 图中一次调整所有单元格(矩形)的大小