如何从JSDOM触发jQuery .on('click',selector,callback)事件?

时间:2017-09-24 19:22:09

标签: javascript jquery events jsdom

我有一段代码来设置我的事件处理程序:

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

在JSDOM中,我想触发mocha单元测试的click事件。 我可以在JSDOM中选择元素.menu-toggle,但是如果我这样触发它,$('.menu-toggle').trigger('click');就不会调用回调handleMenuClicked函数。

如何触发此事件?

1 个答案:

答案 0 :(得分:0)

您可以使用DOM Api并使用dispatchEvent()

在外部调度事件

在您的情况下,代码可能如下所示:

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

我不确定jQuery是如何实现的,但是我已经开始讨论这个并且看到这个在jsdom上工作