我有一个html文本节点(在这种情况下为li
标记),我试图引发关注使用jQuery:
$('#branch').focus();
甚至:
$('#branch').trigger('focus');
我附加了一个事件监听器:
$('#branch').on('focus', function() { console.log('focused'); });
但事件监听器没有解雇。我需要做什么来激活这个事件监听器?
如果我倾听'hocus'事件,而不是发射该事件,那么听众确实会开火:
(我需要这个来进行单元测试,当你专注于节点时会发生什么,我正在构建一个accessible tree)
答案 0 :(得分:0)
文本节点被认为是惰性的,因此不能 “专注”according to the w3c
在文本节点上解雇jQuery的.focus()
方法基本上只是被吞没了。
相反,您必须使用vanilla JS(适用于Chrome,尚未测试其他浏览器):
$('#branch').on('focus', function () {
console.log('jquery listened');
});
var branch = document.getElementById('branch');
branch.addEventListener('focus', function() {
console.log('js listened');
});
// $('#branch').focus(); // this doesn't work! Use JS below instead...
var event = new Event('focus');
branch.dispatchEvent(event);