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

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

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

Спасибо. Dave

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

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

Ответ 1

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

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

Из jQuery tutorial:

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

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

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

Ответ 2

Попробуйте следующее:

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

ИЗМЕНИТЬ -

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

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

Ответ 3

Для других, которые пришли сюда через 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. Не нужно касаться href...

Я люблю jQuery!; -)

Ответ 4

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

CSS

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

JQuery

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

Ответ 5

Вы можете удалить ссылку для ссылки, следуя:

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

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

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

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

Ответ 6

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

Чтобы отключить:

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

Затем снова включите, используя:

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

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

Ответ 7

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

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

Ответ 8

Мой fav в "checkout, чтобы отредактировать элемент и предотвратить -wild wild west clicks в любом месте - в то время как в 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>

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

Ура!

Ответ 9

Пример 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;
    }

Ответ 10

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

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

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

Ответ 11

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

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

Ответ 12

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

Ответ 13

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

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

Ответ 14

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

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

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

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

Ответ 15

Это работает для ссылок, которые имеют встроенный атрибут 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; ", ""));
        });

Ответ 16

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