2012-07-18 36 views
1

我知道如何禁用一個超鏈接,所以當用戶點擊它時,什麼都不會發生。下面是示例:如何禁用所有超鏈接使用jquery

$('#myLink').click(function(e) { 
    e.preventDefault(); 
    //do other stuff when a click happens 
}); 

但現在我有內lidiv我的傳呼機許多超鏈接。它看起來像:

<div id='pager'> 
    <ul> 
     <li> 
      <a href='search.aspx?page=1'>1</a> 
     </li> 
     <li> 
      <a href='search.aspx?page=2'>2</a> 
     </li> 
     <li> 
      <a href='search.aspx?page=3'>3</a> 
     </li> 
     <li> 
      <a href='search.aspx?page=4'>4</a> 
     </li> 
    </ul> 
</div>  

我想在所有的超級鏈接,在我的div通過兩個程序迭代並啓用/禁用所有。因此,當用戶點擊時沒有發生任何事情,也不會發生回傳。一個例程將全部禁用,一個例程將像以前一樣啓用所有超鏈接。這怎麼能實現?

+0

它可能工作... //更好地在這裏使用實時事件處理程序,performancewise $( '')。live('click',function(){... return false;}); //現在簡單地殺死這樣的綁定 $('a')。die('click'); – Thomas 2012-07-18 18:41:22

+0

托馬斯沒有冒犯,但那是個可怕的建議:-)因爲使用它的意外後果,'live'被廣泛譴責。如果您確實想要考慮可能稍後添加到頁面的新A標籤,那麼'delegate'是更好的方法。 (有關更多信息,請參閱http://stackoverflow.com/questions/4579117/jquery-live-vs-delegate) – machineghost 2012-07-18 18:42:39

+0

@machineghost除非您要委託給文檔 - 這與「現場」性能相同-明智的。 – Blazemonger 2012-07-18 18:47:54

回答

3
$('#pager a').click(function(e) { 
e.preventDefault(); 
//do other stuff when a click happens 
}); 
+0

我認爲這也是很好的解決方案。 $( 'A')addClass( '禁用')。如果($(this).hasClass('disabled') return false; }); – Thomas 2012-07-18 18:44:26

+0

如果您希望某些A標記被禁用,並且某些標記不可用,這可能是有道理的,但否則你只是過度複雜的事情,即使你想「啓用」一些A標籤而不是其他的,一個簡單的方法就是解鎖點擊處理程序,而不是比添加一個類,然後讓單擊處理程序執行邏輯來解釋該類。 – machineghost 2012-07-18 19:14:11

2

只需使用jQuery選擇,抓住所有的一個標籤,就像這樣:

$('#pager a').click(function(e) { 
    e.preventDefault(); 
} 
+1

選擇器是你的朋友! – 2012-07-18 18:47:49