如何使用jQuery

时间:2017-05-25 17:19:27

标签: javascript jquery

我有一个html文本节点(在这种情况下为li标记),我试图引发关注使用jQuery:

$('#branch').focus();

甚至:

$('#branch').trigger('focus');

我附加了一个事件监听器:

$('#branch').on('focus', function() { console.log('focused'); });

但事件监听器没有解雇。我需要做什么来激活这个事件监听器?

如果我倾听'hocus'事件,而不是发射该事件,那么听众确实会开火:

listener firing for hocus but not focus

(我需要这个来进行单元测试,当你专注于节点时会发生什么,我正在构建一个accessible tree

1 个答案:

答案 0 :(得分:0)

详见Shane Tomlinson here

  

文本节点被认为是惰性的,因此不能   “专注”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);

See jsbin of example