2017-05-25 174 views
0

我有一個HTML文本節點(一個li標籤在這種情況下),我試圖觸發使用jQuery焦點的文本節點上觸發焦點事件:你怎麼能使用jQuery

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

甚至:

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

我附上一個事件偵聽器:

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

但事件監聽器不˚F iring。我需要做些什麼來激發這個事件監聽器?

如果我聽一個「騙人」事件,並觸發該事件代替,聽者確實不火:

listener firing for hocus but not focus

(當你專注的節點上,我需要這個單元測試會發生什麼,我建立一個accessible tree

+0

'騙人pocus'和'abracadabra'神奇事件......必須成爲ES7 – zer00ne

回答

0

如詳述通過Shane Tomlinson here

文本節點被認爲是惰性的,並且因此不能 「重點」 according to the w3c

射擊jQuery的.focus()法文本節點基本上只是被吞噬的。

相反,你必須使用香草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