1

我已经认识到,添加的事件处理程序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);

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

现在神奇的问题:为什么?

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

4

2 回答 2

1

我从 jquery 论坛得到了解释。

jQuery 事件比原生事件高一个级别。触发器伪造一个 jQuery 事件。如果你想伪造一个本地事件,你需要按照你在问题中写的那样调用它。

简单的答案,不要使用本机事件。

JΛ̊KE

于 2013-01-11T08:37:17.003 回答
0

你为什么不试试

$(SELECTOR).change(function(e){
    e.preventDefault();
    //***DO STUFF HERE***
})
于 2013-01-09T09:58:54.817 回答