jQuery / Javascript事件触发器似乎未触发活动元素。
我有一个播放/暂停按钮,并试图通过Javascript在它们之间切换。使用物理键盘并按Enter键时,我看到它在它们之间切换。尝试通过代码触发它时,实际上似乎什么也没做。
我尝试过的一些事情:
jQuery.event.trigger({type: 'keyup', which : 13});
jQuery.event.trigger({type: 'keydown', which : 13});
document.activeelement.dispatchEvent(new KeyboardEvent('keypress',{'key':'enter'}));
我认为其中之一实际上会像Enter键,然后按一下播放/暂停键。
有什么想法吗?
答案 0 :(得分:1)
要触发特定的按键,请创建jQuery按键Event
,设置要模拟的按键,然后在DOM对象(可能是您的播放器)上触发创建的事件。
var e = $.Event('keypress');
e.which = 13; // Enter key
$('#my-player').trigger(e);
正如@ScottMarcus在评论中提到的,一个更好的主意是触发您的keypress事件而不是事件本身触发的操作。例如,如果您设置了以下事件:
$('#my-player').keypress(function(e) {
if (e.which == 13) {
togglePlayButton();
}
});
您可以直接在您要模拟按键的位置直接调用togglePlayButton();
。不过,不要为此牺牲代码的清晰度。