2014-10-29 60 views
0

是否有可能在JavaScript中對所有<a>元素只有一個監聽器?各種<a>元素的單個事件監聽器

<ul> 
    <li><a href="#1">1</a></li> 
    <li><a href="#2">2</a></li> 
    <li><a href="#3">3</a></li> 
    <li><a href="#4">4</a></li> 
    <li><a href="#5">5</a></li> 
</ul> 

即聽者應該採取的值(例如#4)來更新一些的div。

+0

JQuery通過使用委託來爲一組元素連接單個處理程序提供了簡單的方法。 – TGH 2014-10-29 02:05:36

+1

查看http://stackoverflow.com/questions/1687296/what-is-dom-event-delegation – ryansilva 2014-10-29 02:05:56

+0

@TGH沒有jQuery。 – Alex 2014-10-29 02:07:23

回答

1

我希望這段代碼可以幫助你,附加在ul標籤上的監聽器現在捕獲其子代的所有click事件並解析出它們的href值。你可能想用jquery lib來進一步解析#href值。

<ul> 
<li><a href="#1">1</a></li> 
<li><a href="#2">2</a></li> 
<li><a href="#3">3</a></li> 
<li><a href="#4">4</a></li> 
<li><a href="#5">5</a></li> 
</ul> 
<script> 
document.getElementsByTagName("ul")[0].addEventListener("click", function(e){ 
e.preventDefault(); 
alert(e.target.href); 
}); 
</script> 
+0

爲什麼添加[0]? – Alex 2014-10-29 02:35:23

+0

實際上它不適用於[0]。 – Alex 2014-10-29 02:37:10

+0

'e.target'不是跨平臺,請嘗試'e.target || e.srcElement' – 2014-10-29 02:45:58