为什么JQuery不会触发添加的事件监听器? [英] Why JQuery doesn't trigger added eventlistener?

查看:93
本文介绍了为什么JQuery不会触发添加的事件监听器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经认识到,该事件处理程序添加了 addEventListener ,不受
$。触发器的影响。这个问题的特殊原因是,我有几个自创html元素,它们在不使用外部库(仅纯js)的情况下实现一些逻辑。
现在在我的主要项目中,我想使用这些控件,而且我还有像jQuery这样的外部库。
现在例如我想触发更改事件(记住...事件添加了 element.addEventListener(event,函数))与code> $(element).trigger(change)。



结果:没有发生 / p>

只有当我使用这样的代码时才会触发该事件:

  event = document.createEvent(HTMLEvents); 
event.initEvent(change,true,true);
event.eventName ='change';
element.dispatchEvent(event);

另一方面,事件处理程序添加了jQuery,也由自定义创建的事件触发。



现在的奇怪的问题是:为什么?



您可以在以下jsfiddle中找到一个例子。 http://jsfiddle.net/UYyXv/3/

解决方案

我有一个 jQuery论坛的说明


jQuery事件的级别高于本机事件。触发器假货
一个jQuery事件。如果你想伪造一个本地事件,你需要把它称为
,就像你在问题中写的那样。



简单的回答,不要使用本地事件。 / p>

JΛ̊KE



I have recognized, that eventhandler added with addEventListener where not influenced by $.trigger. The special reason for that question is, that I have several self created html elements which implements some logic without using external libraries (only pure js). Now in my main project I want to use these controls and further there I have external libaries like jQuery. Now for example I want to trigger the change event (remember...events are added with element.addEventListener("event", function)) with $(element).trigger("change").

Result: nothing happened

The event only is triggered, when i use code like this:

event = document.createEvent("HTMLEvents");
event.initEvent("change", true, true);
event.eventName = 'change';
element.dispatchEvent(event);

On the other side...eventhandler added with jQuery, where also triggered by a custom created event.

Now the magic question: Why??

You can find a little example in the following jsfiddle. http://jsfiddle.net/UYyXv/3/

解决方案

I have got an explanation from the jquery forums.

jQuery events are a level higher than the native events. Trigger fakes a jQuery event. If you want to fake a native event you need to call it as you wrote in the question.

Simple answer, don’t use native events.

JΛ̊KE

这篇关于为什么JQuery不会触发添加的事件监听器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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