2012-03-26 76 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