4

在 Firefox 中,当您将 onclick 事件处理程序添加到方法时,事件对象会自动传递给该方法。除其他外,这允许检测单击了哪个特定元素的能力。例如

document.body.onclick = handleClick;

function handleClick(e)
{
    // this works if FireFox
    alert(e.target.className);
}

有什么办法可以在 IE 中进行近似吗?我需要能够检测从 body 元素上的事件处理程序中单击了哪个元素。

4

4 回答 4

7

如果我不能使用 jQuery,我会怎么做

document.body.onclick = handleClick;

function handleClick(e)
{
    //If "e" is undefined use the global "event" variable
    e = e || event;

    var target = e.srcElement || e.target;
    alert(target.className);
}

这是一个jQuery解决方案

$(document.body).click(function(e) {
  alert($(this).attr("class"));
});
于 2008-11-21T11:48:34.947 回答
3

这不是将事件添加到 dom 节点的批准符号。

if (el.addEventListener){
  el.addEventListener('click', modifyText, false); 
} else if (el.attachEvent){
  el.attachEvent('onclick', modifyText);
}

绑定点击事件的推荐符号是否跨浏览器友好。

看:

此外,当单击事件时,执行的回调函数包含一个对象“this”,它是被单击的实体。

function foo() { 
   window.open(this.src, '_blank'); 
}
于 2008-11-21T11:44:01.820 回答
2

在 IE 中是

e.srcElement
于 2008-11-21T11:43:26.080 回答
0

我认为 IE 使用了一个名为event. 看看有没有效果?

于 2008-11-21T11:42:05.520 回答