2012-03-26 51 views
0

如果HTML是这样的:标准方式触发特定事件

<a href="javascript:void(0)" id="link">Click Me</a> 

,我设置eventHandlerclick作为

ele.addEventListener('click', clickme, false); 

什么是越来越漂亮的标准方式处理程序中的值ele

我成功通过获取ele值铬:(工作示例 - http://jsfiddle.net/hy5Pz/4/

function clickme(e){ 
    var ele = e.toElement; 
    ele.innerText = "I got clicked"; 
} 

,并在Firefox是:(工作示例 - http://jsfiddle.net/hy5Pz/3/

function clickme(e){ 
    var ele = e.rangeParent; 
    ele.data="I got clicked"; 
} 

我是新来的javascript,所以我想知道是否有一个非常标准的cross-useragent方法。

回答

2

我相信

var ele = e.currentTarget || e.srcElement; 

在大多数浏览器。它基本上首先尝试使用e.target,如果没有找到,则使用e.srcElement代替。在IE浏览器中使用e.target,在IE浏览器中使用e.srcElement

+0

+1;另外'innerText'不完全是跨浏览器友好的。 (小于4的Firefox版本无法识别它)。 – vcsjones 2012-03-26 14:20:25

+0

@ Xeon06感谢您的回答,但'e.target'&'e.srcElement'给出'href'值。 http://jsfiddle.net/hy5Pz/5/ – 2012-03-26 14:20:38

+0

@AbhijeetRastogi他的意思是这样的:http://jsfiddle.net/hy5Pz/6/ – vcsjones 2012-03-26 14:22:45

1

如果您使用的是addEventListener,this将是事件最初绑定的元素。 e.target将是触发事件的元素。如果你改变了标记来:

<a href="#" id="link"> 
    <span>Click Me</span> 
</a> 

e.target将是span,而不是a元素。

+0

我读过''''不应该用于'href'。这就是我使用'javascript:void(0)'的原因,但我使用'#'观察了你。你对此有何评论? – 2012-03-26 14:30:18

+0

谢谢。它有助于。 – 2012-03-26 14:59:57