我有窗口加载,滚动和调整大小的代码:
jQuery(window).bind("load scroll resize", function() {
// do stuff on every event
// do something else only once
});
但是我希望代码的一部分只触发一次。如何才能做到这一点?
UPDATE - 我已经在代码中定义了一个变量,该变量重新触发理想情况下的id,就像在重新触发的代码中使用一样。
答案 0 :(得分:3)
看起来这就是你真正想要的东西:
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(您可以调整小提琴窗口的大小以查看使用已定义变量的事件)
如果你还想在初始加载时发生scroll / resize事件,你可以这样做:
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)
})
基本上在上面的示例中,在初始加载时,您的函数和事件将被声明,初始化和调用。然后每次滚动和调整大小事件时都会调用该函数。
答案 1 :(得分:2)
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
在两个块之外声明,因此它们都可以在两个块中使用。