我想通过jQuery trigger()方法模拟假mousedown事件,并通过本机javascript方法注册mousedown事件 - addEventListener()。而且我发现它无法触发......
elem.addEventListener('mousedown', function () {
alert('addEventListener');
});
$(elem).on('mousedown', function () {
alert('on');
});
$(elem).trigger('mousedown');
我做了一些测试。
这里有什么问题吗?
感谢。
P.S。使用addEventListener()的原因是我想编写一个没有jQuery的库。
答案 0 :(得分:9)
尝试使用
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);
}
答案 1 :(得分:5)
Jquery仅触发自己创建的事件
即使订单也很重要,例如:此作品
$(elem).on('mousedown', function () {
alert('on');
});
$(elem).trigger('mousedown');
但是代码无效
$(elem).trigger('mousedown');
$(elem).on('mousedown', function () {
alert('on');
});
看看这个 DEMO FIDDLE