我想通过 jQuery trigger(
方法模拟伪造的 mousedown
事件,并通过原生 JavaScript 方法注册 mousedown
事件 - addEventListener()
,发现触发不了:
elem.addEventListener('mousedown', function () {
alert('addEventListener');
});
$(elem).on('mousedown', function () {
alert('on');
});
$(elem).trigger('mousedown');
我对此做了一些测试。
- 通过 jQuery
on()
注册mousedown
事件
- 结果:有效
- 通过
addEventListener()
注册click
事件
- 结果:有效
这里有什么问题吗?
附言我使用 addEventListener()
的原因是我想编写一个没有 jQuery 的库。
最佳答案
尝试使用
EventTarget.dispatchEvent
你的代码应该是这样的
var elem = document.getElementById('square');
elem.addEventListener('mousedown', function () {
alert('addEventListener');
});
$(elem).on('mousedown', function () {
alert('on');
});
elem.dispatchEvent(new Event('mousedown'))
如果您正在考虑使用 IE,您可能必须使用 fireEvent
。
object.fireEvent(bstrEventName, pvarEventObject, pfCancelled)
好像是
if (document.createEvent) {
element.dispatchEvent(event);
} else {
element.fireEvent("on" + event.eventType, event);
}
关于javascript - jQuery 触发 addEventListener 注册的 mousedown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24357819/