Отключить гиперссылку с помощью jQuery

<a href="gohere.aspx" class="my-link">Click me</a>

Я сделал

$('.my-link').attr('disabled', true);

но это не сработало

Есть ли простой способ отключить гиперссылку с помощью jquery? Удалить href? Я бы предпочел не возиться с href. Поэтому, если я могу это сделать без удаления href, это будет здорово.

Ответ 1

Вы можете связать обработчик кликов, который возвращает false:

$('.my-link').click(function () {return false;});

Чтобы снова включить его, отвяжите обработчик:

$('.my-link').unbind('click');

Обратите внимание, что disabled не работает, потому что он предназначен только для входных данных формы.


jQuery уже ожидал этого, предоставляя ярлык в jQuery 1.4.3:

$('.my-link').bind('click', false);

И отсоединить/снова включить:

$('.my-link').unbind('click', false);

Ответ 2

Я знаю, что это старый вопрос, но он пока не решен. Следующее мое решение...

Просто добавьте этот глобальный обработчик:

$('a').click(function()
{
     return ($(this).attr('disabled')) ? false : true;
});

Вот небольшая демонстрация: http://jsbin.com/akihik/3

вы даже можете добавить немного css, чтобы придать другому стилю все ссылки с отключенным атрибутом.

например

a[disabled]
{
    color: grey; 
}

Во всяком случае кажется, что атрибут disabled недействителен для тегов a. Если вы предпочитаете следовать спецификациям w3c, вы можете легко использовать html5-совместимый атрибут data-disabled. В этом случае вам нужно изменить предыдущий фрагмент и использовать $(this).data('disabled').

Ответ 3

Удаление атрибута href определенно похоже на путь. Если по какой-то причине вам это понадобится позже, я просто сохраню его в другом атрибуте, например.

$(".my-link").each(function() {
    $(this).attr("data-oldhref", $(this).attr("href"));
    $(this).removeAttr("href");
});

Это единственный способ сделать это, что приведет к тому, что ссылка также будет отключена без написания пользовательского CSS. Просто привязка обработчика кликов к false приведет к тому, что ссылка будет выглядеть как обычная ссылка, но при нажатии на нее ничего не произойдет, что может смутить пользователей. Если вы собираетесь использовать маршрут обработчика кликов, я бы, по крайней мере, также .addClass("link-disabled") и написал некоторый CSS, который делает ссылки с этим классом похожими на обычный текст.

Ответ 4

$('.my-link').click(function(e) { e.preventDefault(); }); 

Вы можете использовать:

$('.my-link').click(function(e) { return false; }); 

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

Ответ 5

Свойству CSS pointer-events немного не хватает, когда дело доходит до поддержки (caniuse.com), но это очень красноречиво:

.my-link { pointer-events: none; } 

Ответ 6

function EnableHyperLink(id) {
        $('#' + id).attr('onclick', 'Pagination("' + id + '")');//onclick event which u 
        $('#' + id).addClass('enable-link');
        $('#' + id).removeClass('disable-link');
    }

    function DisableHyperLink(id) {
        $('#' + id).addClass('disable-link');
        $('#' + id).removeClass('enable-link');
        $('#' + id).removeAttr('onclick');
    }

.disable-link
{
    text-decoration: none !important;
    color: black !important;
    cursor: default;
}
.enable-link
{
    text-decoration: underline !important;
    color: #075798 !important;
    cursor: pointer !important;
}

Ответ 7

Атрибут disabled недействителен для всех HTML-элементов, которые, как мне кажется, см. в статье MSDN. Это и правильное значение для инвалидов просто "отключено". Ваш лучший подход - связать функцию щелчка, которая возвращает false.

Ответ 8

Добавить класс, содержащий указатели-события: non

.active a{ //css
text-decoration: underline;
background-color: #fff;
pointer-events: none;}


$(this).addClass('active');

Ответ 9

Ниже будет ссылка на ссылку с текстом

$('a').each(function () {
    $(this).replaceWith($(this).text());
});

Изменить:

Вышеуказанный код будет работать с гиперссылками только с текстом, он не будет работать с изображениями. Когда мы попробуем его со ссылкой на изображение, он не покажет никакого изображения.

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

// below given function will replace links with images i.e. for image links
$('a img').each(function () {
    var image = this.src;
    var img = $('<img>', { src: image });
    $(this).parent().replaceWith(img);
});

// This piece of code will replace links with its text i.e. for text links
$('a').each(function () {
    $(this).replaceWith($(this).text());
});

пояснение: В приведенных выше фрагментах кода в первом фрагменте мы заменяем все ссылки на изображения только ими. После этого мы заменяем текстовые ссылки текстом.

Ответ 10

Это также хорошо работает. Прост, удобен и не требует использования jQuery.

<a href="javascript:void(0)">Link</a>

Ответ 11

Try:

$(this).prop( "disabled", true );