我想通过jQuery trigger()方法模拟假mousedown事件,并通过本机javascript方法注册mousedown事件 - addEventListener()。我发现它无法触发......
elem.addEventListener('mousedown', function () {
alert('addEventListener');
});
$(elem).on('mousedown', function () {
alert('on');
});
$(elem).trigger('mousedown');
jsFiddle中的示例
我做了一些测试。
- 注册mousedown事件 jQuery on()
- 寄存器 点击 addEventListener()事件
这里有什么不对吗?
谢谢。
附:使用addEventListener()的原因是我想编写一个没有jQuery的库。
尝试使用
EventTarget.dispatchEvent
MDN链接
你的代码就像是
var elem = document.getElementById('square');
elem.addEventListener('mousedown', function () {
alert('addEventListener');
});
$(elem).on('mousedown', function () {
alert('on');
});
elem.dispatchEvent(new Event('mousedown'))
你可能不得不使用 fireEvent 如果你正在考虑IE。
object.fireEvent(bstrEventName, pvarEventObject, pfCancelled)
MSDN链接
就像
if (document.createEvent) {
element.dispatchEvent(event);
} else {
element.fireEvent("on" + event.eventType, event);
}
Jquery仅触发自己创建的事件
即使订单也很重要: 这个作品
$(elem).on('mousedown', function () {
alert('on');
});
$(elem).trigger('mousedown');
但是下面的代码将会 不行
$(elem).trigger('mousedown');
$(elem).on('mousedown', function () {
alert('on');
});
看看这个 DEMO FIDDLE