【问题标题】:Event Handlers in Firefox vs IE/ChromeFirefox 与 IE/Chrome 中的事件处理程序
【发布时间】:2011-12-23 18:02:49
【问题描述】:

我正在使用一些事件处理程序,并且对某个方面感到有些困惑。

根据this 线程,Firefox 遵循 WC3 标准并将点击事件作为参数传递给您的处理程序。然后,您可以通过编码MyHandler(event) 访问此事件。但是,如果您已经传递了另一个参数怎么办?

具体来说,我的 onClick 函数是editItem(this),其中this 指的是被点击的表格行。但是,我需要在 editItem 函数内调用 event.stopPropagation() 以防止其他一些处理程序关闭。在 IE 和 Chrome 中,这是可行的,但在 Firefox 中,event.stopPropagation() 给了我一个空指针,这是有道理的,因为我没有将事件参数传入editItem(this)

我的问题是,如何在我的 onClick 函数中同时接收 thisevent ?我可以像editItem(this, event) 这样附加它们吗? Firefox 如何知道哪一项是事件,哪一项是我的个人参数?

【问题讨论】:

  • 我非常推荐 quirksmode.org 上关于事件处理的优秀文章:quirksmode.org/js/introevents.html(是的,全部)。
  • 先生,您是一位绅士和一位学者。下班后的书签。 :)

标签: javascript jquery events firefox cross-browser


【解决方案1】:

你可以像你提到的那样做editItem(this, event)。那么你的函数只需要这样定义:

function editItem(element, event){
   ...
}

由于参数的顺序,它会知道哪个参数是哪个。

【讨论】:

  • Eggselent。我忘记了“事件”是一个特殊的标识符。 :)
  • @TheDramaLlama 这不是一个特殊的标识符。只是 on* HTML 属性被编译成函数,该函数接受一个名为“事件”的参数。
  • 啊,我明白你的意思了。所以它是“特殊”的,因为它在功能上是特殊的,但不是命名法?
猜你喜欢
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多