这是我现在用来移动一个多层轮播(左上向下)的代码,但我需要添加一个超时函数说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