這是我現在用來移動一個多層輪播(左上向下)的代碼,但我需要添加一個超時函數說5000,所以在觸發下一次點擊之前,動畫有時間完成。如何添加一個延遲/超時到jQuery按鍵功能
function checkKey(e){
switch (e.keyCode) {
case 40:
//alert("down");
$("#down").trigger("click");
break;
case 38:
//alert("up");
$("#up").trigger("click");
break;
case 37:
//alert("left");
$("#left").trigger("click");
break;
case 39:
//alert("right");
$("#right").trigger("click");
break;
}
}
// Call checkKey on key press
if ($.browser.mozilla) {
$(document).keypress(checkKey);
} else {
$(document).keydown(checkKey);
}
UPDATE:
我最終找到一個解決方案。我知道這樣做可能有更簡潔的方法,但我不知道如何原諒我的混亂。
// Set Time variable
var checkTime = 0;
// Call checkKey on key press
if ($.browser.mozilla) {
$(document.documentElement).keypress(function (event) {
// set variable to current time
var currentTime = new Date()
// See if Now's current time is 400 past the old current time
if((currentTime.getTime() - checkTime) > 400){
// If so then fire the triggers.
// Using if seemed to limit the inputs to a single keystroke
if (event.keyCode == 40) {
$("#down").trigger("click");
} else if (event.keyCode == 38) {
$("#up").trigger("click");
} else if (event.keyCode == 37) {
$("#left").trigger("click");
} else if (event.keyCode == 39) {
$("#right").trigger("click");
}
// Reset current time.
checkTime =currentTime.getTime();
}
});
} else {
$(document.documentElement).keydown(function (event) {
// set variable to current time
var currentTime = new Date()
// See if Now's current time is 400 past the old current time
if((currentTime.getTime() - checkTime) > 400){
// If so then fire the triggers.
// Using if seemed to limit the inputs to a single keystroke
if (event.keyCode == 40) {
$("#down").trigger("click");
} else if (event.keyCode == 38) {
$("#up").trigger("click");
} else if (event.keyCode == 37) {
$("#left").trigger("click");
} else if (event.keyCode == 39) {
$("#right").trigger("click");
}
// Reset current time.
checkTime =currentTime.getTime();
}
});
}
這會激怒用戶...他們按一個鍵,不會得到預期的結果 - 爲什麼不使用[Stop()](http://api.jquery.com/stop/)完成動畫並開始下一個? – ManseUK 2012-03-29 15:47:53
我會比延遲更多的延遲,因爲它會更容易實現,因爲如果我試圖向前跳3張圖片並且在下一次按鍵之前必須等待每一轉,它會嚴重地使我煩惱。 – Anthony 2012-03-29 15:48:06
我想問題是我正在移動.active(ul.active)和.active-li(ul.active li.active-li)來跟蹤當前幻燈片的位置。而且這是一個組合,在這些關閉周圍以及在某些時刻,如果用戶點擊箭頭的速度過快,它會超越自己。 – 2012-03-29 15:57:16