【问题标题】:How to get the element clicked on?如何让元素被点击?
【发布时间】:2012-07-29 06:37:45
【问题描述】:

如果给出此代码,您将如何检查文档中的哪个项目被单击?

if ( document.addEventListener && document.attachEvent && document.fireEvent ) {
    document.attachEvent( "onclick", function() {
     // ...
    });
}

【问题讨论】:

  • addEventListener 可用时,您为什么要使用attachEvent
  • @Quentin 这是来自 Jquery 源代码,我不知道他们为什么将这两个一起使用,有人对 Quentin 的问题有答案吗?

标签: javascript jquery


【解决方案1】:
// using e.srcElement or event.srcElement

试试这个:) 看看这个http://www.quirksmode.org/js/events_advanced.html

if (document.addEventListener){
    document.addEventListener("click", function(event){
        var targetElement = event.target || event.srcElement;
        console.log(targetElement);
    });
} else if (document.attachEvent) {    
    document.attachEvent("onclick", function(){
        var targetElement = event.target || event.srcElement;
        console.log(targetElement);
    });
}

【讨论】:

  • OP 想知道在触发事件时单击了哪个元素,而您的答案似乎没有这样做。
  • srcElement 是旧的并且主要是微软的实现,我宁愿在可用时使用event.targetvar target = event.target || event.srcElement;ReferenceMDN.
  • 没问题,第一个侦听器处理程序 (addEventListener) 的函数也应该使用 e.target 我猜,嗯,现在连我的头都被这些针对旧版本 IE 的 hack 所困扰。跨度>
  • 这可能有点多余,但应该让它防弹:Fiddle。值得庆幸的是,现在有 jQuery 来处理处理程序绑定..
  • event 未定义。你的意思是写function(event) 而不是function(e)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 2015-04-14
  • 2011-12-20
  • 2023-02-13
相关资源
最近更新 更多