Сделать код 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 объявлен вне обоих блоков, он будет доступен внутри обоих.

Другие вопросы по тегам