如何使用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标记,这可能是有道理的,但否则,您会使事情变得过于复杂。即使您确实希望“启用”有些是标记而不是其他标记,一种更简单的方法是解除单击处理程序的绑定,而不是添加一个类,然后让单击处理程序执行逻辑来解释该类。