簡體   English   中英

在運行時JavaScript中創建匿名函數

[英]Create anonymous function in runtime JavaScript

我有下一個代碼結構:

每個頁面的global.js和* .js。 讓我們以global.js和main_menu.js為例。

我有一些具有類ripple_effect的元素,當單擊該類的元素時,動畫開始運行650ms,因此為了讓用戶看到動畫,我嘗試在代碼中稍加延遲(我知道這不好) ,但仍然)。

在global.js中,我有下一個代碼:

var delayForRipple = 300;

function Execute(func) {
    setTimeout(func(), delayForRipple);
}

在main_menu.js中,我有下一個代碼:

$(this).on('click', ".menu_button", function (e) {
        href = $(this).attr('id');
        Execute(function () {
            window.location.href = href;
        });
    });

但是此代碼會立即執行。 我該如何解決?

這是快速復制的小提琴:

 var delayForRipple = 300; $(".wrapper").on('click', "#clickMe", function (e) { Execute(function () { alert("TEST"); }); }); function Execute(func) { setTimeout(func(), delayForRipple); } 
 .test_element { height:100px; width:100px; background-color:red; } 
 <div class="wrapper"> <div id="clickMe" class="test_element"></div> </div> 

您做錯了...您必須將回調傳遞給setTimeout才能執行,而不要在那里執行

做類似的事情

function Execute(func) {
   setTimeout(func, delayForRipple);
}

甚至刪除冗余的Execute函數

$(".wrapper").on('click', "#clickMe", function (e) {
   setTimeout(function () {
      alert("TEST");
   }, 650);
});

這可行。

function Execute(func) {
    setTimeout(func, 2000);   
}

Execute(function() {
   alert("test"); 
});

func()更改為setTimeout func

暫無
暫無

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

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