2017-09-24 146 views
0

我有一段代碼,設置了我的事件處理程序:如何從JSDOM觸發jQuery .on('click',selector,callback)事件?

const element = $('#my-element'); 
const menuToggle = '.menu-toggle'; 
function assignEventHandlers() { 
    element.on('click', menuToggle, handleMenuClicked); 
} 

在JSDOM,我想觸發摩卡單元測試點擊事件。 我可以在JSDOM中選擇元素.menu-toggle,但如果我去觸發它,$('.menu-toggle').trigger('click');回調handleMenuClicked函數不會被調用。

如何觸發此事件?

回答

0

您可以使用DOM API和分派事件外使用dispatchEvent()

在你的情況下,代碼可能是這個樣子:

var event = new MouseEvent('click', { 
    'view': window, 
    'bubbles': true, 
    'cancelable': true 
    }); 
$('.menu-toggle')[0].dispatchEvent(event); 

我不知道jQuery的已實現此,但我已經穿過這個,看到這個工作jsdom

+0

我試過,但是當我用我的jsdom窗口變量替換窗口,我得到一個錯誤,說MouseEvent沒有定義。有任何想法嗎? – cjh193

+0

@ cjh193你的jsdom版本是什麼? – Burimi

+0

jsdom版本11.2.0 – cjh193

相關問題