[英]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.