我想要發生的是當點擊「.slick-next」按鈕,瀏覽器等待3秒鐘,然後運行loadPHP()函數。下面是我的代碼,這似乎理論上應該工作,但不是。會發生什麼情況是,setTimeout函數在頁面加載時運行一次,但在此之後單擊下一個按鈕不會執行任何操作。setTimeout立即與jQuery發射?
var timeout = null;
$(".slick-next").click(nextButton(timeout));
var nextButton = (function(timeout) {
window.clearTimeout(timeout);
timeout = setTimeout(function() {
loadPHP();
}, 3000);
});
我試着在setTimeout中包裝整個jQuery表達式,但那也行不通。會發生什麼是你不能點擊按鈕3秒,但可以無限次地點擊它。
setTimeout(function() {
$(".slick-next").click(nextButton(timeout));
}, 3000));
爲什麼會發生這種情況?
'click'需要一個函數,而不是'undefined',這是'nextButton'返回的內容。您可能需要'.click(nextButton)',並且還要注意JS中沒有傳遞引用。 – elclanrs
@elclanrs你可以擴展它嗎? – aaronmcavinue
http://jsfiddle.net/0y1gzf94/ –