簡體   English   中英

禁用(並重新啟用)href和onclick元素

[英]Disable (and re-enable) the href and onclick on elements

我只想在元素(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: <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>

好吧,我找到了一個解決方法:在主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仍然可用”的問題; 但是如果你想刪除的hrefa元素:

$('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( '點擊');

您可以將href屬性直接設置為""以防止原始文件顯示在狀態欄中,如果這是您要求的。

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

否則, event.preventDefault()已經阻止鏈接被點擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM