为什么JQuery不会触发添加的事件监听器? [英] Why JQuery doesn't trigger added eventlistener?
问题描述
我已经认识到,该事件处理程序添加了 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屋!