javascript - jQuery 触发 addEventListener 注册的 mousedown

标签 javascript jquery dom-events

我想通过 jQuery trigger( 方法模拟伪造的 mousedown 事件,并通过原生 JavaScript 方法注册 mousedown 事件 - addEventListener(),发现触发不了:

elem.addEventListener('mousedown', function () {
    alert('addEventListener');
});
$(elem).on('mousedown', function () {
    alert('on');
});
$(elem).trigger('mousedown');

Sample in jsFiddle

我对此做了一些测试。

  1. 通过 jQuery on() 注册 mousedown 事件
  • 结果:有效
  1. 通过addEventListener()注册click事件
  • 结果:有效

这里有什么问题吗?

附言我使用 addEventListener() 的原因是我想编写一个没有 jQuery 的库。

最佳答案

尝试使用

EventTarget.dispatchEvent

MDN link

你的代码应该是这样的

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) 

MSDN link

好像是

if (document.createEvent) {
    element.dispatchEvent(event);
} else {
    element.fireEvent("on" + event.eventType, event);
}

关于javascript - jQuery 触发 addEventListener 注册的 mousedown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24357819/

相关文章:

ASP.NET 和火狐浏览器 : why doesn't clicking on a GridView ButtonField do anything?

php - 如何在 ci 中使用动态添加和删除时内爆文本区域值?

javascript - touches 和 targetTouches 的区别

javascript - 需要一些关于异步 javascript 代码与同步代码的澄清

javascript - Jquery 我的所有功能都可以工作,除了以下功能

javascript - 丑陋的引导日期选择器

javascript - 为步进向导缩小时 CSS 样式应用不同

javascript - 添加 onClick 事件动态 DOM 对象

angularjs - 使用 AngularJS 关闭/离开页面事件

javascript - DataBinder.Eval 返回的值被解释为变量而不是字符串