由addEventListener注册的jQuery触发器mousedown [英] jQuery trigger mousedown registered by addEventListener

查看:101
本文介绍了由addEventListener注册的jQuery触发器mousedown的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过jQuery trigger()方法模拟假mousedown事件,并通过本机javascript方法注册mousedown事件 - addEventListener()。我发现它无法触发......

I want to simulate fake mousedown event by jQuery trigger() method, and I register mousedown event by native javascript method - addEventListener(). And I found it can't be triggered...

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

jsFiddle中的示例

我做了一些测试。


  1. 注册mousedown事件通过 jQuery on()

    • 结果:工作


  • 结果:工作

这里有什么问题吗?

谢谢。

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

P.S. The reason why uses addEventListener() is that I want to write a library without 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

You might have to use fireEvent if you are considering IE.

object.fireEvent(bstrEventName, pvarEventObject, pfCancelled) 

MSDN链接

它就像

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

这篇关于由addEventListener注册的jQuery触发器mousedown的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆