2017-01-17 2 views
2

У меня есть несколько ссылок (элементы A) STYLED AS кнопки с классом «btn», и когда один из них нажат, я хочу, чтобы эта кнопка была отключена. этот код не работает:отключить ссылку после клика, используя jQuery

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

Есть еще Gazillion учебники для предотвращения события по умолчанию формы кнопки отправки, а затем отключить, но это не совсем то, что мне нужно ...

по-видимому, мой $this не указывает на правильный объект, или что-то =)

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

Извините, обновите выше. Элемент, который у меня есть, не является кнопкой, это ссылка в виде кнопки ...

+0

вы можете воспроизвести его в stacksnippet или http://jsfiddle.net? –

+0

Попытайтесь вернуть false в конце обратного вызова и снова проверьте его, если вы отправляете форму с обычной почтой. вы также можете попробовать e.preventDefault() и проверить, работает ли он. –

+0

, похоже, работает нормально. Вам нужно предоставить минимальный рабочий пример вашей проблемы и документировать, что ваше ожидаемое поведение – seemly

ответ

3

Не пытайтесь отключить ярлык привязки. Попробуйте установить 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

это должно работать нормально, но вы можете использовать 'data ('disabled', true) 'вместо' prop ('disabled', true) ', чтобы убедиться, что он работает в браузере. – mylee

+0

btw отключенный не работает, главным образом потому, что, как вы уже упоминали, вы используете гиперссылку вместо кнопки элемент, который не имеет свойства с именем «disabled» – mylee

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"); 
Смежные вопросы