我已经认识到,事件处理程序添加了addEventListener
,但不受其影响
$.trigger
。这个问题的特殊原因是,我有几个自己创建的html元素,它们在不使用外部库(只有纯js)的情况下实现了一些逻辑。
现在在我的主项目中我想使用这些控件,并且在那里我有像jQuery这样的外部库。
现在举个例子,我想用element.addEventListener("event", function)
触发更改事件(请记住......事件随$(element).trigger("change")
添加)。
结果:什么都没发生
当我使用这样的代码时,仅触发事件:
event = document.createEvent("HTMLEvents");
event.initEvent("change", true, true);
event.eventName = 'change';
element.dispatchEvent(event);
另一方面... eventhandler添加了jQuery,其中也由自定义创建的事件触发。
现在神奇的问题:为什么?
您可以在以下jsfiddle中找到一个小例子。 http://jsfiddle.net/UYyXv/3/
答案 0 :(得分:1)
我有一个explanation from the jquery forums。
jQuery事件比本机事件高一级。触发假货 一个jQuery事件。如果你想伪造原生事件,你需要调用它 正如你在问题中写的那样。
简单回答,不要使用原生事件。
JΛ̊KE
答案 1 :(得分:0)
你为什么不试试
$(SELECTOR).change(function(e){
e.preventDefault();
//***DO STUFF HERE***
})