Сделать код JQuery в окне загрузки, прокрутки и изменения размера только огонь один раз?
У меня есть код, который запускается при загрузке окна, прокрутки и изменения размера:
jQuery(window).bind("load scroll resize", function() {
// do stuff on every event
// do something else only once
});
Однако я хочу, чтобы одна часть кода запускалась только один раз. Как это может быть сделано?
ОБНОВЛЕНИЕ - У меня уже есть переменная, определенная в коде, который повторно запускает, и в идеале он хотел бы использовать в коде, который повторно запускает.
2 ответа
Похоже, это то, что вы действительно ищете:
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
})
})
Скрипка (вы можете изменить размеры окна скрипки, чтобы увидеть, как работает событие, используя определенную переменную)
Если вы также хотите, чтобы событие 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)
})
Другой пример, с которым вы можете проверить прокрутку - предупреждение об эпилепсии:)
Также я использовал 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
объявлен вне обоих блоков, он будет доступен внутри обоих.