【问题标题】:Why JQuery doesn't trigger added eventlistener?为什么 JQuery 不会触发添加的事件监听器?
【发布时间】:2012-12-23 08:04:53
【问题描述】:

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

结果:什么都没发生

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

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

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

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

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

【问题讨论】:

    标签: javascript jquery web event-handling


    【解决方案1】:

    我有一个explanation from the jquery forums

    jQuery 事件比原生事件高一个级别。触发假货 一个 jQuery 事件。如果你想伪造一个原生事件,你需要调用它 正如你在问题中所写。

    简单的答案,不要使用原生事件。

    JΛ̊KE

    【讨论】:

      【解决方案2】:

      你为什么不试试

      $(SELECTOR).change(function(e){
          e.preventDefault();
          //***DO STUFF HERE***
      })

      【讨论】:

      • 你会说什么?我不明白为什么它应该解释为什么没有 jQuery 创建的事件处理程序不会被 jQuery 触发的事件触发。
      猜你喜欢
      • 2011-03-03
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2016-07-17
      • 1970-01-01
      • 2015-08-18
      相关资源
      最近更新 更多