2017-01-17 201 views
2

我有一些類型爲「btn」的鏈接(A元素)STYLED AS按鈕,當點擊其中一個按鈕時,我希望禁用特定按鈕。這個代碼不工作:點擊使用jQuery後禁用鏈接

$('.btn').on('click', function(e) { 
    $(this).prop('disabled',true); 
}); 

有用於防止形式的默認事件提交按鈕,然後禁用這一個極大的教程,但事實並非完全是我需要的...

很明顯,我的$this沒有指向正確的對象,或某物=)

----------- UPDATE ---------------

SORRY,上面更新。元素我不是一個按鈕,它是一個鏈接風格的按鈕...

+0

可以重現它在stacksnippet或http://jsfiddle.net? –

+0

嘗試在回調結束時返回false,並在您使用普通回發提交表單時再次檢查。你也可以嘗試e.preventDefault()並檢查它是否工作。 –

+0

似乎工作正常。您需要提供您的問題的最小工作示例,並記錄您的預期行爲 – seemly

回答

3

不要試圖禁用Anchor標記。嘗試設置href。

$('.btn').on('click', function(e) { 
    e.preventDefault(); 
    $(this).off("click").attr('href', "javascript: void(0);"); 
    //add .off() if you don't want to trigger any event associated with this link 
}); 
0

而不是使用this的,你可以通過使用其指定id你的目標。

$('.btn').on('click', function(e) { 
 
     $('#btn2').prop('disabled',true); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button id="btn1" class="btn">Button</button> 
 
<button id="btn2" class="btn">Button</button> 
 
<button id="btn3" class="btn">Button</button>

希望它可以幫助

+0

我知道,但我想要一個任意函數.btn –

+0

@MattWelander'當他們中的一個被點擊時,我希望那個特定的按鈕被禁用。「從這句話中我只想到了一個應該禁用的指定按鈕。所以,如果案例是所有的按鈕應該被禁用,那麼你的代碼已經正常工作。 –

+0

沒有所有的按鈕不應該,只有點擊一個,但是當我寫代碼時,我不知道哪個按鈕會被點擊,所以代碼必須是抽象的 –

0

此作品(鉻),但也許一些缺點?

 $('.btn').on('click', function(e) { 
      if($(this).prop('disabled') == true) { 
       return false; 
      } 

      $(this).prop('disabled',true); 

     }); 
+0

這應該很好,但你可以使用'數據('disabled',true)'而不是'prop('disabled',true)'以確保它可以在瀏覽器中工作 – mylee

+0

順便說一句,禁用不起作用主要是因爲你已經提到你正在使用超鏈接元素,而不是按鈕元素沒有名爲「disabled」的屬性 – mylee

+0

根據這裏https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a,''沒有禁用屬性。不過,我認爲你可以通過刪除href屬性來欺騙它,然後改變css。 –

0
$(document).ready(function() { 
    $('.btn').on('click', function(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 
    alert('I have been clicked!'); 
    $(this).css('pointer-events', 'none').css('cursor', 'default'); 
    }); 
}); 

這將防止鏈路上的任何其他進一步的點擊。

0

如果您的HTML像下面的代碼這樣

<a href="https://www.google.co.in/" target="_blank" class="test">This  is another paragraph.</a> 

使用:

$(".test").one("click", function() { 
    var clas = $(this).attr("class"); 
    setTimeout(function() { 
     $("." + clas).removeAttr('href'); 
    }, 100); 
}); 

如果您的HTML像下面的代碼這樣

<a href="https://www.google.co.in/" target="_blank" class="test"> <button class="btn">This is another paragraph.</button></a> 

使用:

$(".btn").one("click", function() { 
    var clas = $(this).parent().attr("class"); 
    setTimeout(function() { 
     $("." + clas).removeAttr('href'); 
    }, 100); 
}); 
0

這個工作對我來說:

$('a').css("pointer-events", "none");