Javascript 如果单击按钮,我的keydown事件将运行太多次 $(文档).keydown(函数(e){ 如果(e.keyCode==37){//left e、 预防默认值(); $(“#新闻#容器#内部”)。动画({ //尊 左:(int#u px($(“#新闻#u容器_内部”).css(“左”)+945)>0?最大长度:“+=945” }); $(“#德拉巴”)。设置动画({ 左:(int_px($(“#dragBar”).css(“左”)-dragBar_路)
这是我的密码。问题是,如果我单击右箭头按钮1秒,此事件将运行35次。我需要绑定它3或4次,如果我点击1秒。 对不起,英语不好。Javascript 如果单击按钮,我的keydown事件将运行太多次 $(文档).keydown(函数(e){ 如果(e.keyCode==37){//left e、 预防默认值(); $(“#新闻#容器#内部”)。动画({ //尊 左:(int#u px($(“#新闻#u容器_内部”).css(“左”)+945)>0?最大长度:“+=945” }); $(“#德拉巴”)。设置动画({ 左:(int_px($(“#dragBar”).css(“左”)-dragBar_路),javascript,jquery,html,Javascript,Jquery,Html,这是我的密码。问题是,如果我单击右箭头按钮1秒,此事件将运行35次。我需要绑定它3或4次,如果我点击1秒。 对不起,英语不好。 请帮帮我。如果您只想发射计数器,您可以使用计数器,例如4次: $(document).keydown(function(e) { if(e.keyCode == 37) { // left e.preventDefault(); $("#news_container_inner").animate({
请帮帮我。如果您只想发射计数器,您可以使用计数器,例如4次:
$(document).keydown(function(e) {
if(e.keyCode == 37) { // left
e.preventDefault();
$("#news_container_inner").animate({
// zuun
left: (int_px($("#news_container_inner").css("left")) + 945) > 0 ? MAX_LENGTH : "+=945"
});
$('#dragBar').animate({
left: (int_px($("#dragBar").css("left")) - dragBar_road) < 0 ? MAX_LENGTH_Drag+1 : "-="+dragBar_road
});
console.log('left');
}
else if(e.keyCode == 39) { // right
e.preventDefault();
$("#news_container_inner").animate({
// baruun
left: (int_px($("#news_container_inner").css("left")) - 945) < MAX_LENGTH ? 0 : "-=945"
});
$('#dragBar').animate({
left: (int_px($("#dragBar").css("left")) + dragBar_road) > MAX_LENGTH_Drag+1 ? 1 : "+="+dragBar_road
});
console.log('right');
}
});
编辑
如果要限制每秒的事件数,可以使用setInterval
:
var counter = 0;
$(document).on('keydown', function(e) {
e.preventDefault();
counter++;
if(counter > 4) {
return;
}
if(e.keyCode == 37) {
console.log('left');
} else if(e.keyCode == 39) {
console.log('right');
}
}).on('keyup', function(e) {
counter = 0;
});
如果您希望显示为减慢轮询速率,则需要使用设置为
333ms
或250ms
的计时器,具体取决于您希望每秒执行3次还是4次操作。但是如何设置?我不知道该怎么办。这将阻止在4点以后再按任何键,无论我按下键1秒还是10秒。。我认为要求每秒触发4次按键事件。@TJ更新了我的答案。
var counter = 0,
intervalInited = false;
function initInterval() {
intervalInited = true;
setInterval(function(){
if(counter > 4) {
counter = 0;
}
}, 1000);
}
$(document).on('keydown', function(e) {
e.preventDefault();
counter++;
if(counter > 4) {
if(!intervalInited) {
initInterval();
}
return;
}
if(e.keyCode == 37) {
console.log('left');
} else if(e.keyCode == 39) {
console.log('right');
}
}).on('keyup', function(e) {
counter = 0;
});