如何使用jquery禁用所有超链接

如何使用jquery禁用所有超链接,jquery,Jquery,我知道如何一次禁用一个超链接,所以当用户单击它时,什么也不会发生。以下是示例: $('#myLink').click(function(e) { e.preventDefault(); //do other stuff when a click happens }); 但是现在我的寻呼机在li和div中有很多超链接。它看起来像: <div id='pager'> <ul> <li> <a

我知道如何一次禁用一个超链接,所以当用户单击它时,什么也不会发生。以下是示例:

$('#myLink').click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});
但是现在我的寻呼机在
li
div
中有很多超链接。它看起来像:

<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
中迭代所有超链接,并通过两个例程启用/禁用所有超链接。因此,当用户单击时,将不会发生任何事情,也不会发生回发。一个例程将禁用所有,一个例程将像以前一样启用所有超链接。如何实现这一点?

只需使用一个jQuery选择器来获取所有这些a标记,如下所示:

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

只需使用jQuery选择器来获取所有这些a标记,如下所示:

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

它可能会起作用…//最好在此处使用live事件处理程序performancewise$('a').live('click',function(){…return false;});//现在只需像$('a')这样杀死绑定即可;无意冒犯,托马斯,但这是一个可怕的建议:-)
live
由于使用它的意外后果而受到广泛的抨击。如果您确实想考虑以后可能添加到页面的新A标记,
delegate
是更好的方法。(有关更多信息,请参阅)@machineghost,除非您要将其委托给文档——这与
live
性能方面相同。@Blazemonger是正确的,但即使如此,我认为
delegate
更可取,因为它更明确。使用
live
时,用户似乎神奇地获得了一个始终有效的事件处理程序,如果他们不深入研究
live
的内部工作,他们将无法理解发生了什么。使用
delegate
时,他们明确表示“我正在将一个事件处理程序连接到文档”,如果没有其他事情的话,他们会更清楚地知道自己在做什么(当然,理想情况下,这种意识会导致他们在DOM的更高层进行授权)。因此,我仍然坚持认为,最好不要使用
live
。它可能会起作用…//最好在这里使用live事件处理程序performancewise$('a')。live('click',function(){…return false;});//现在只需像$('a')这样杀死绑定即可;无意冒犯,托马斯,但这是一个可怕的建议:-)
live
由于使用它的意外后果而受到广泛的抨击。如果您确实想考虑以后可能添加到页面的新A标记,
delegate
是更好的方法。(有关更多信息,请参阅)@machineghost,除非您要将其委托给文档——这与
live
性能方面相同。@Blazemonger是正确的,但即使如此,我认为
delegate
更可取,因为它更明确。使用
live
时,用户似乎神奇地获得了一个始终有效的事件处理程序,如果他们不深入研究
live
的内部工作,他们将无法理解发生了什么。使用
delegate
时,他们明确表示“我正在将一个事件处理程序连接到文档”,如果没有其他事情的话,他们会更清楚地知道自己在做什么(当然,理想情况下,这种意识会导致他们在DOM的更高层进行授权)。所以,我仍然坚持认为,最好不要使用
live
。我认为这也是一个很好的解决方案$('a').addClass('disabled')$('a')。单击(function(){if($(this).hasClass('disabled')返回false;});如果希望禁用某些a标记,而不禁用某些a标记,这可能是有意义的,但否则会使事情过于复杂。即使您确实希望“启用”有些是A标记,而不是其他标记,一种更简单的方法是解除单击处理程序的绑定,而不是添加一个类,然后让单击处理程序执行逻辑来解释该类。我认为这也是一个很好的解决方案。$('A').addClass('disabled');$('A').click(function(){if($(this).hasClass('disabled')返回false;});如果您希望禁用某些A标记,而不希望禁用某些A标记,这可能是有道理的,但否则,您会使事情变得过于复杂。即使您确实希望“启用”有些是标记而不是其他标记,一种更简单的方法是解除单击处理程序的绑定,而不是添加一个类,然后让单击处理程序执行逻辑来解释该类。