【问题标题】:event is not defined in FireFox, but ok in Chrome and IE事件未在 FireFox 中定义,但在 Chrome 和 IE 中可以
【发布时间】:2011-02-27 19:27:53
【问题描述】:

我使用 jQuery 生成 HTML:

$("<a />")
    .append("demo")
    .click(function () { DemoFunc(event, value.Id) })

这非常适合 Chrome 和 IE8,但在 FireFox 中出现错误:“未定义事件”。 我改变了这样的代码:

.attr("onclick", "DemoFunc(event, " + value.Id + ")")

它适用于 Firefox,但不适用于 Chrome 和 IE。

DemoFunc = function (e, assocGroupId) {
    var target = (e.target) ? $(e.target) : $(e.srcElement);
    ....
}

为什么!?帮助!!

【问题讨论】:

    标签: javascript jquery events click


    【解决方案1】:

    如果您围绕使用原始事件而不是 jQuery 事件构建代码,则可以使用 evt.originalEvent 来引用本机事件。

    【讨论】:

      【解决方案2】:

      在 IE 和 Chrome 中,event 解析为 window.event。 Firefox 没有此属性,而是通过将事件作为参数传递给事件处理函数来提供事件。 jQuery 通过在所有浏览器中提供事件对象参数为您抽象出这种差异:

      $("<a />")
          .append("demo")
          .click(function (evt) { DemoFunc(evt, value.Id) });
      

      【讨论】:

      • 非常感谢蒂姆!你节省了我的时间! :-)
      • 换句话说.. 确保 'evt' 或您在调用中使用的任何内容也出现在 function() 部分。与stackoverflow.com/questions/20522887/… 中的问题相同
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 2013-12-20
      • 2012-02-10
      • 2014-11-04
      相关资源
      最近更新 更多