【问题标题】:Is it possible to get the click event without passing it to the handler?是否可以在不将其传递给处理程序的情况下获取单击事件?
【发布时间】:2012-12-01 16:02:49
【问题描述】:

我有类似的东西:

<div onclick="doSomething('foo', 'bar');"></div>

如您所见,事件并未传递给处理程序。无论如何都可以在处理程序中访问它吗?

【问题讨论】:

  • 我不明白你想知道什么...你不想使用 onclick 属性吗?是吗?
  • 不是跨浏览器的方式。在 IE 和 Chrome 中你可以访问window.event
  • 这不是我想做的事,而是我要面对的问题:)
  • 谢谢,我一定错过了。

标签: javascript


【解决方案1】:

如您所见,事件并未传递给处理程序。无论如何都可以在处理程序中访问它吗?

没有。

实现这一点的最佳方法是向您的 div 添加一个 id,并通过脚本设置事件处理。

这应该可以满足您的需求

<div id='myDiv'></div>

然后

function doSomething(evt, str1, str2) { ... }

document.getElementById('myDiv').onclick = function(e) {

    doSomething(e, 'foo', 'bar');

};

只需确保包含上述内容的脚本标签位于您的正文标签的底部,这样脚本在创建并准备好 dom 之前不会运行。

【讨论】:

  • 当然可以,而且这是我唯一使用的一种。但我想知道是否有办法按照问题中描述的方式进行操作 - 即不更改内联调用。
  • 这是首选方式,但您还没有回答问题。
  • @Przemek:不改变内联调用?很确定答案是否定的。
  • @AdamRackis:我没有答案。如果那是因为无法做到这一点,并且如果您在 your 答案的开头添加“否”,我会很乐意支持它;)
  • 嗯 - 这是正确的答案,所以对我来说唯一的方法就是接受它。谢谢大家的帮助。
猜你喜欢
  • 2019-04-02
  • 2017-01-04
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
  • 2018-06-27
相关资源
最近更新 更多