jQuery отключить ссылку

кто-нибудь знает, как отключить ссылку в jquery без использования return false;?

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

спасибо. Дэйв!--4-->

обновление Вот код. Что ему нужно сделать после .expanded класс был применен для повторного включения отключенного ссылка на сайт.

$('ul li').click(function(e) {
    e.preventDefault();
    $('ul').addClass('expanded');
    $('ul.expanded').fadeIn(300);
    //return false;
});

16 ответов


$('#myLink').click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});

Это предотвратит поведение по умолчанию гиперссылки, которая должна посетить указанный href.

из jQuery учебник:

для щелчка и большинства других событий вы может предотвратить поведение по умолчанию - здесь, перейдя по ссылке на jquery.com - позвонив на мероприятие.preventDefault () в обработчике событий

Если вы хотите preventDefault() только если выполняется определенное условие (что-то скрыто для экземпляр), вы можете проверить видимость своего ul с помощью класса расширен. Если он виден (т. е. не скрыт), ссылка должна срабатывать как обычно, так как оператор if не будет введен, и, таким образом, поведение по умолчанию не будет предотвращено:

$('ul li').click(function(e) {
    if($('ul.expanded').is(':hidden')) {
        e.preventDefault();
        $('ul').addClass('expanded');
        $('ul.expanded').fadeIn(300);
    } 
});

попробуйте это:

$("a").removeAttr('href');

изменить-

из вашего обновленного кода:

 var location= $('#link1').attr("href");
 $("#link1").removeAttr('href');
 $('ul').addClass('expanded');
 $('ul.expanded').fadeIn(300);
 $("#link1").attr("href", location);

для других, кто пришел сюда через google, как я-вот еще один подход:

css:
.disabled {
  color: grey; // ...whatever
}

jQuery:
$('#myLink').click(function (e) {
  e.preventDefault();
  if ($(this).hasClass('disabled'))
    return false; // Do something else in here if required
  else
    window.location.href = $(this).attr('href');
});

// Elsewhere in your code
if (disabledCondition == true)
  $('#myLink').addClass('disabled')
else
  $('#myLink').removeClass('disabled')

помните: это не только класс css

class= "buttonstyle"

, но и эти два

class= "buttonstyle disabled"

таким образом, вы можете легко добавлять и удалять дополнительные классы с помощью jQuery. Не нужно трогать рот...

Я люблю jQuery! ;-)


вот альтернативное решение css / jQuery, которое я предпочитаю для его краткости и минимизации сценариев:

css:

a.disabled {
  opacity: 0.5;
  pointer-events: none;
  cursor: default;
}

jQuery:

$('.disableAfterClick').click(function (e) {
   $(this).addClass('disabled');
});

Вы можете удалить нажмите на ссылку ниже;

$('#link-id').unbind('click');

вы можете повторно включить ссылку, следуя,

$('#link-id').bind('click');

вы не можете использовать свойство "disabled" для ссылок.


Если вы идете по маршруту href, вы можете сохранить его

отключения:

$('a').each(function(){
    $(this).data("href", $(this).attr("href")).removeAttr("href");
});

затем повторно включите использование:

$('a').each(function(){
    $(this).attr("href", $(this).data("href"));
});

в одном случае я должен был сделать это таким образом, потому что события click уже были связаны где-то еще, и я не контролировал его.


Я всегда использую это в jQuery для отключения ссылок

$("form a").attr("disabled","disabled");

my fav в "checkout для редактирования элемента и предотвращения-wild wild west щелкает в любом месте-в то время как в checkout" функции

$('a').click(function(e) {
    var = $(this).attr('disabled');
    if (var === 'disabled') {
        e.preventDefault();
    }
});

поэтому, если я хочу, чтобы все внешние ссылки на панели инструментов второго действия были отключены в "режиме редактирования", как описано выше, я добавлю функцию редактирования

$('#actionToolbar .external').attr('disabled', true);

пример ссылки после пожара:

<a href="http://goo.gl" target="elsewhere" class="external" disabled="disabled">Google</a>

и теперь вы можете использовать отключенное свойство для ссылок

Ура!


вы должны найти ответ здесь.

спасибо @Will и @Matt за это элегантное решение.

jQuery('#path .to .your a').each(function(){
    var $t = jQuery(this);
    $t.after($t.text());
    $t.remove();
});

вы можете просто скрыть и показать ссылку, как вам нравится

$(link).hide();
$(link).show();

пример ссылки html:

        <!-- boostrap button + fontawesome icon -->
        <a class="btn btn-primary" id="BT_Download" target="blank" href="DownloadDoc?Id=32">
        <i class="icon-file-text icon-large"></i>
        Download Document
        </a>

используйте это в jQuery

    $('#BT_Download').attr('disabled',true);

добавьте это в css:

    a[disabled="disabled"] {
        pointer-events: none;
    }

просто запустите материал, установите флаг, верните false. Если флаг установлен - ничего не делать.


Я знаю, что это не с jQuery, но вы можете отключить ссылку с помощью простого css:

a[disabled] {
  z-index: -1;
}

HTML будет выглядеть как

<a disabled="disabled" href="/start">Take Survey</a>

это работает для ссылок, которые имеют встроенный атрибут onclick. Это также позволяет вам позже удалить "return false", чтобы включить его.

        //disable all links matching class
        $('.yourLinkClass').each(function(index) {
            var link = $(this);
            var OnClickValue = link.attr("onclick");
            link.attr("onclick", "return false; " + OnClickValue);
        });

        //enable all edit links
        $('.yourLinkClass').each(function (index) {
            var link = $(this);
            var OnClickValue = link.attr("onclick");
            link.attr("onclick", OnClickValue.replace("return false; ", ""));
        });

unbind() устарел в jQuery 3 используйте off() метод вместо этого:

$("a").off("click");

просто использовать $("a").prop("disabled", true);. Это действительно отключит элемент de link. Должно быть prop("disabled", true). Не используйте attr("disabled", true)