禁用(并重新启用)href和onclick元素

我只想在元素(a或div)上启用/禁用onclick和href。

我不知道该怎么做。

我可以通过在click事件上添加处理程序来禁用onclick,但href仍然可用。

$(this).unbind().click(function(event){ event.preventDefault(); return; }); 

编辑找到了一个元素

 if ($(this).attr("href")) { $(this).attr("x-href", $(this).attr("href")); $(this).removeAttr("href"); } 

如果您在onclick事件上返回false ,则会忽略href

  1. 这将转到Goole: Test

  2. 这不会发给Google: Test

好吧,我找到了一个解决方法:在主div上叠加包含我想要禁用的所有元素..它只是有效。

您可以尝试以下方法:

 $('a, div').click( function(e){ return false; // cancels default action *and* stops propagation // or e.preventDefault; // cancels default action without stopping propagation }); 

preventDefault MDC文档 , event.preventDefault jQuery文档 。

所以问题:JavaScript event.preventDefault vs return false

由于click事件被取消,我不确定“ href仍然可用”的问题; 但是如果你想从元素中删除href

 $('a[href]').attr('href','#'); 

将删除它们(或者更确切地说,用#替换URL)。


编辑回应OP的评论(提问):

好的,抱歉;)我只想(通过点击一个按钮),禁用/启用所有链接(点击或href)元素(div或a)

 $('#buttonRemoveClickId, .buttonClassName').click( function() { $('a, div').unbind('click'); }); $('#buttonReplaceClickId, .buttonOtherClassName').click( function() { $('a, div').bind('click'); }); 
  • unbind()
  • bind()

试试这个来禁用点击:

$(本).unbind( ‘点击’);

您可以将href属性直接设置为""以防止原始文件显示在状态栏中,如果这是您要求的。

 $(this).unbind().click(function(event){ event.preventDefault(); }).attr("href", ""); 

否则, event.preventDefault()已经阻止链接被点击。