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)