JS触发器keydown事件
JS trigger keydown event
我有点困惑为什么这个代码不起作用:
$(document).keydown(function(e){
if (e.keyCode == 39) {
//RIGHT
document.getElementById('col_detector_right').innerHTML="";
col_jack('right');
if(document.getElementById('col_detector_right').innerHTML!=""){
}
else{
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left + 400;
document.getElementById('jack').style.left = new_left+'px';
}
right = true;
return false;
}
if (e.keyCode == 37) {
//LEFT
document.getElementById('col_detector_right').innerHTML="";
col_jack('right');
if(document.getElementById('col_detector_right').innerHTML!=""){
}
else{
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left - 4;
document.getElementById('jack').style.left = new_left+'px';
}
right = false;
return false;
}
if (e.keyCode == 38) {
//UP
return false;
}
if (e.keyCode == 40) {
//DOWN
return false;
}
if (e.keyCode == 32) {
//SPACE
if(right==true){
var top = document.getElementById('jack').style.top;
var current_top = parseFloat(top);
var new_top = current_top -40;
document.getElementById('jack').style.top = new_top+'px';
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left + 20;
document.getElementById('jack').style.left = new_left+'px';
right=false;
var press = $.Event('keydown');
press.which = 39;
$(document).trigger(press);
}
else{
var top = document.getElementById('jack').style.top;
var current_top = parseFloat(top);
var new_top = current_top -40;
document.getElementById('jack').style.top = new_top+'px';
}
return false;
}
});
特别是这个位,不起作用:
var press = $.Event('keydown');
press.which = 39;
$(document).trigger(press);
为什么?这个想法是它应该触发右箭头键,但不是吗?什么都没有发生,要么没有触发它,要么没有正确检查keydown事件?我不知道是哪一个,还是别的什么?
您需要将一个属性对象传递给jQuery Event对象,如下所示:
// Create a new jQuery.Event object with specified event properties.
var e = jQuery.Event("keydown", { keyCode: 64 });
// trigger an artificial keydown event with keyCode 64
jQuery("body").trigger( e );
阅读$.Event-的API文档http://api.jquery.com/category/events/event-object/
相关文章:
- 使用特定键在keydown时触发事件
- 阻止浏览器对keydown事件作出反应,但不取消该事件
- IE9-添加和删除DOM元素会破坏父keydown事件
- 在文本区域禁用javascript定义的keydown事件并恢复默认行为
- 在Chrome中模拟keydown事件
- 使用Keydown事件移动对象
- 如何收听骨干事件方法上的keydown
- 如何在不干扰网站其他部分的情况下,在画布上捕捉keydown事件
- HTML jQuery 函数在 Keydown 事件上不起作用
- 输入字段未使用 ng-keydown 事件更新
- angularjs的ng keydown事件,按下哪个键的值,然后显示按下的键的值
- background.js正在捕获textbox的keydown事件
- EmberJS中的全局keyDown/keyPress事件,而无需设置焦点
- 当我更新HTML时,Keydown事件停止触发
- 为什么我的引导工具提示的标题只会随着jQuery中的keydown事件而更改一次
- 使用AngularJS对超快速keyup和keydown事件调用函数
- d3:拦截特定元素上的keydown事件
- Javascript ActiveElement和Keydown事件侦听器
- 在Firefox中的keydown事件中隐藏元素时焦点顺序错误
- 输入 keydown,单击IE 7中的事件更新图像