2013-11-24 16 views
0

我有類似如下:設置DIV ID內的所有鏈接返回false

<div id="songs"> 
<ul> 
<li> <a href="(a real link)">song 1</a></li> 
<li> <a href="(a real link)">song 2</a></li> 
</ul> 
</div> 

我想在div#首歌曲中的所有鏈接,自動設置爲使用javascript返回false(這樣的鏈接會僅在javascript被禁用時纔打開);我不想在每個鏈接上添加onclick="return false"

我一點都不強,所以任何幫助都非常感謝。謝謝。

ETA通過這個^^我的意思是我不會知道你在說什麼,除非你展示整個代碼。對不起,再次感謝您的幫助。

+0

用[addEventListener](https://developer.mozilla.org/en/DOM/element.addEventListener)添加一個事件,然後用'event.preventDefault()' – elclanrs

+0

防止默認行爲並完成elclanrs評論,使用'document.querySelectorAll'來獲得'a'元素。 – Zeta

回答

1

只需添加一個事件偵聽器,所有的鏈接,像這樣:

var root = document.getElementById('songs'), 
links = root.getElementsByTagName('a'), 
doNothing = function(e) { 
    e.preventDefault(); 
}; 

for (var i = 0; i < links.length; ++i) { 
    links[i].addEventListener('click', doNothing, false); 
} 

這適用於IE> = 9;對於舊版本,請使用attachEvent而不是addEventListener或修改onclick屬性,後者更爲普遍地被理解。

+0

太棒了,謝謝。你能告訴我爲什麼這隻適用於IE9 +,如果有辦法解決這個問題? – user2860129

+0

@ user2860129在IE9之前,你應該使用'attachEvent'。 –

+0

@ user2860129另外,使用'links [i] .onclick = doNothing;' –

0

假設你的目標的現代瀏覽器(ES5兼容)

1)獲得的歌曲

var links = document.querySelectorAll('songs a'), 
function noop(e) { e.preventDefault() }, 
forEach=Array.prototype.forEach; 

2.A)如果你只是打算在裏面的所有鏈接( 「A」 標記)禁用點擊

forEach.call(links,function(theLink){theLink.onclick=noop}); 

2.B)如果要添加其他點擊事件處理程序,然後

forEach.call(links,function(theLink){theLink.addEventListener('click', noop, false);});