javascript - Jquery触发器一次只对addEventListener指定的一个事件起作用

标签 javascript jquery

我正在构建一个不依赖 Jquery 的库,以提高我的 javascript 知识。然而,在为库编写测试时,我使用了一些 Jquery 方法。

我有一个测试,可以使用 Jquery 的 .trigger 方法触发使用 native EventTarget.addEventListener 方法添加的事件监听器。

var elem = document.getElementById('square');
elem.addEventListener('click', function () {
    alert('click');
});
elem.addEventListener('mouseover', function () {
   alert('mouseover');
});
$(elem).trigger('click');
$(elem).trigger('mouseover');

当我在同一元素上触发两个不同的事件时,只会触发一个处理程序。

这可以在 JSFiddle 中观察到

有人可以解释为什么会发生这种情况以及如何解决它吗?

最佳答案

如果您使用addEventListener,则无法使用jQuery的trigger方法。 (正如您所注意到的,它适用于某些事件,例如click,但不适用于所有人,例如mouseover)。 this question 中也对此进行了解释.

你有两个选择。您可以像这样使用 jQuery 的 on 事件:

$(elem).on('mouseover', function () {
    alert('mouseover');
});

或者另一种是不使用jQuery来触发事件。您可以查看this question来做到这一点。

关于javascript - Jquery触发器一次只对addEventListener指定的一个事件起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354637/

相关文章:

javascript - 从 Angular 6 CLI 中动态添加的组件引用服务

javascript - 如何将字符串和组件作为 Prop 传递?

JavaScript 日期格式问题

javascript - 更改结构时删除按钮不起作用

javascript - 动态获取数据目标

javascript - 如何在node js中同时对日期和各个日期的值数组进行排序?

javascript - javascript eval 真的有那么大的安全威胁吗?

jquery - 创建粘性元素

jquery - 滚动时 Wordpress Logo 更改

jquery - 在 Html 中查找关键字并使用 jQuery 隐藏特定内容