关于TAB压力的jQuery模拟on(mousedown)事件

时间:2014-12-09 08:41:06

标签: javascript jquery dom keydown

在我的网页中,我必须捕获TAB键压力,然后模拟所涉及对象的mousedown事件。 我试过了:

$('*').keydown(function(e) {
var keyCode = e.keyCode || e.which; 

if (keyCode == 9) { 
    var elementClicked = e.target.nodeName;
    elementClicked.mousedown();
}
});

但错误

  

未捕获的TypeError:undefined不是函数

on elementClicked.mousedown();排出现。

如何模拟和调用涉及TAB压力的元素上的mousedown事件?

提前致谢

AM

3 个答案:

答案 0 :(得分:1)

$(this).trigger('mousedown')或仅$(this).click(),这将触发绑定到该元素的任何事件。请注意,您应该执行* ...这对性能非常不利。

尝试:

$(document).on('keydown.tab', '*', function(e){
  if( e.keyCode == 9 ){
    $(this).trigger('mousedown');
  }
  return false;
});

但你真的不知道TAB点击了哪个元素...

UPDATE:

首先应该为所有元素提供属性tabindex,然后才能在按Tab键时跟踪这些元素,因为它们具有焦点(首先点击它们或通过键盘聚焦):

$('body *').each(function(i){
    this.setAttribute('tabindex',i);
});

DEMO PAGE - 只有h1元素使用TAB模拟click

答案 1 :(得分:1)

elementClicked是对象名称而不是对象 - 使用jquery选择对象:

$(elementClicked).mousedown()

答案 2 :(得分:0)

您可以尝试下面更新的代码:

$(document).on("keyup", function(e) {
    var keyCode = e.keyCode || e.which; 

    if (keyCode == 9) { 
        var elementClicked = $(this);
        elementClicked.trigger("mousedown");
    }
});

希望这有帮助!