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

时间:2011-01-07 13:26:30

标签: javascript jquery javascript-events

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

我不知道该怎么做。

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

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

编辑找到元素的黑客


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

5 个答案:

答案 0 :(得分:6)

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

  1. 这将转到Goole:<a href="http://www.google.com" onclick="alert('Go to Google')">Test</a>

  2. 这不会发给Google:<a href="http://www.google.com" onclick="alert('Go to Google'); return false;">Test</a>

答案 1 :(得分:5)

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

答案 2 :(得分:2)

您可以尝试以下方法:

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

    // or e.preventDefault;
       // cancels default action without stopping propagation
});

MDC documentation for preventDefaultjQuery documentation for event.preventDefault

SO question: JavaScript event.preventDefault vs return false

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

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

将删除它们(或者更确切地说,将网址替换为#)。


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

  

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

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

答案 3 :(得分:1)

尝试此操作以禁用点击:

$(本).unbind( '点击');

答案 4 :(得分:0)

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

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

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