簡體   English   中英

使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

});

但是我希望代碼的一部分僅觸發一次。 如何才能做到這一點?

更新-我已經在代碼中定義了一個變量,該變量可以重新觸發理想的id,就像在重新觸發的代碼中使用一樣。

看來這是您真正要尋找的東西:

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
    })
})

小提琴 (您可以調整小提琴窗口的大小以使用定義的變量查看事件的工作)


如果您還希望滾動/調整大小事件在初始加載時發生,則可以執行以下操作:

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在兩個塊的外部聲明,因此在兩個內部都可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM