jQuery отключить ссылку
кто-нибудь знает, как отключить ссылку в jquery без использования return false;?
в частности, то, что я пытаюсь сделать, это отключить ссылку на элемент, выполнив щелчок по нему с помощью jquery, который запускает некоторые вещи, а затем повторно включить эту ссылку, чтобы при повторном нажатии она работала по умолчанию.
спасибо.
Дэйв
обновление
Вот код. Что ему нужно сделать после .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');EDIT -
из вашего обновленного кода:
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")); });в одном случае я должен был сделать это таким образом, потому что события щелчка уже были связаны где-то еще, и я не контролировал его.
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(); });
пример ссылки 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; ", "")); });
просто использовать
$("a").prop("disabled", true);. Это будет действительно отключить-де-элемент link. Должно бытьprop("disabled", true). Не используйтеattr("disabled", true)
Comments