2017-09-24 147 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

相关问题