Mam łącze kotwicy, które chcę wyłączyć, gdy użytkownik go kliknie. Lub usuń znacznik kotwicy z całego tekstu, ale zdecydowanie zachowaj tekst.
<a href='' id='ThisLink'>some text</a>
Mogę to łatwo zrobić za pomocą przycisku, dodając .attr("disabled", "disabled");
Pomyślnie dodałem wyłączoną właściwość, ale link nadal był klikalny.
Nie obchodzi mnie, czy tekst jest podkreślony, czy nie.
Jakaś wskazówka?
Kiedy klikniesz na niewłaściwego muzyka, powinien on po prostu dodać „Wrong” i stać się niemożliwym do kliknięcia.
Kiedy klikniesz i masz rację, powinien dodać „Niesamowite”, a następnie wyłączyć wszystkie <a>
tagi.
Odpowiedzi:
Właśnie zdałem sobie sprawę, o co prosiłeś (mam nadzieję). Oto brzydkie rozwiązanie
var preventClick = false; $('#ThisLink').click(function(e) { $(this) .css('cursor', 'default') .css('text-decoration', 'none') if (!preventClick) { $(this).html($(this).html() + ' lalala'); } preventClick = true; return false; });
źródło
Najczystszą metodą byłoby dodanie klasy ze zdarzeniami pointer: none, gdy chcesz wyłączyć kliknięcie. Funkcjonowałaby jak normalna etykieta.
.disableClick{ pointer-events: none; }
źródło
pointer-events:none
spowoduje również wyłączeniecursor
tekstu tytułu i innych zdarzeń najechania myszą.<a href='javascript:void(0);'>some text</a>
źródło
javascript: URI
, ocenia kod w identyfikatorze URI, a następnie zastępuje zawartość strony zwracaną wartością, chyba że zwrócona wartość toundefined
.void
Operatora może być używany do powrotuundefined
. Na przykład:<a href="javascript:void(0);">
Click here to do nothing
</a>
Należy jednak pamiętać, żejavascript:
pseudo protokół jest odradzany w stosunku do innych alternatyw, takich jak dyskretne procedury obsługi zdarzeń.Użyj stylu CSS wskaźnika zdarzeń . (jak zasugerował Jason MacDonald)
Zobacz MDN https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events . Jest obsługiwany w większości przeglądarek.
Proste dodanie atrybutu „wyłączony” do kotwicy wykona zadanie, jeśli masz globalną regułę CSS, taką jak:
a[disabled], a[disabled]:hover { pointer-events: none; color: #e1e1e1; }
źródło
$("#elementid").attr("disabled", "disabled");
. Pomocne może być również włączeniecursor: default
do CSS (zgodnie z sugestią Muhammada Nasira).<a />
elementy nie mają wyłączonego atrybutu - wydaje się dziwne.$('a').removeAttr('href')
lub
$('a').click(function(){ return false})
To zależy od sytuacji
źródło
Bootstrap zapewni nam
.disabled
klasę. Proszę, użyj go.Ale
.disabled
klasa działa tylko wtedy, gdy znacznik „a” ma już klasę „btn”. Nie działa z żadnym starym znacznikiem „a”.btn
Klasa nie może być odpowiednie w pewnym kontekście, jak to ma styl konotacje. Pod osłonami.disabled
klasa ustawia siępointer-events
nanone
, więc możesz sprawić, by CSS robił to samo, co sugerowali Saroj Aryal i Vitrilo. (Dziękuję Les Nightingill za tę radę).źródło
Dodaj
css
zajęcia:.disable_a_href{ pointer-events: none; }
Dodaj to
jquery
:$("#ThisLink").addClass("disable_a_href");
źródło
Po prostu usuń
href
atrybut z tagu kotwicy.źródło
Najlepszym sposobem jest zapobieganie domyślnej akcji. W przypadku tagu kotwicy domyślnym zachowaniem jest przekierowanie na
href
podany adres.Zatem następujący javascript działa najlepiej w tej sytuacji:
$('#ThisLink').click(function(e) { e.preventDefault(); });
źródło
Możesz użyć zdarzenia onclick, aby wyłączyć akcję click:
<a href='' id='ThisLink' onclick='return false'>some text</a>
Lub możesz po prostu użyć czegoś innego niż
<a>
tag.źródło
text-decoration: none
i,.disabledLink { color: #000 !important; }
aby wyglądało jak zwykły tekst.Komentarze Jason MacDonald działały dla mnie, testowane w Chrome, Mozila i IE.
Dodano szary kolor, aby pokazać efekt wyłączenia.
.disable_a_href{ pointer-events: none; **color:#c0c0c0 !important;** }
Jquery wybierał tylko pierwszy element na liście kotwic, dodał metaznak (*), aby zaznaczyć i wyłączyć wszystkie elementy o identyfikatorze
#ThisLink
.$("#ThisLink*").addClass("disable_a_href");
źródło
Napisz to jeden wiersz kodu jQuery
$('.hyperlink').css('pointer-events','none');
jeśli chcesz pisać w pliku css
.hyperlink{ pointer-events: none; }
źródło
Utwórz następującą klasę w arkuszu stylów:
.ThisLink{ pointer-events: none; cursor: default; }
Dodaj tę klasę do linku dynamicznie w następujący sposób.
<a href='' id='elemID'>some text</a> // or using jquery <script> $('#elemID').addClass('ThisLink'); </script>
źródło
Spróbuj tego:
$('a').contents().unwrap();
źródło
Po prostu w SASS:
.some_class{ // styles... &.active { pointer-events:none; } }
źródło
To jest metoda, której użyłem do wyłączenia, mam nadzieję, że to pomaga.
$("#ThisLink").attr("href","javascript:;");
źródło
$('#ThisLink').one('click',function(){ $(this).bind('click',function(){ return false; }); });
Byłby to inny sposób na zrobienie tego, moduł obsługi
return false
, który wyłączy link, zostanie dodany po jednym kliknięciu.źródło
Najłatwiejszy sposób
W Twoim html:
<a id="foo" disabled="true">xxxxx<a>
W twoim js:
$('#foo').attr("disabled", false);
Jeśli użyjesz go jako atrybutu, działa idealnie
źródło