Dzięki za całą twoją odpowiedź, nadal nie działa, więc możesz sprawić, by działała z funkcją document.ready
Senthil Kumar Bhaskaran
Może pomóc, jeśli opublikujesz fragment kodu, który nie działa.
Hooray Im Helping
Właściwie moje kodowanie jest w Railsach, a moje kodowanie to <% = foo.add_associated_link ('Add email', @ project.email.build)%> kiedy renderuję go w przeglądarce, widzę e-mail, ale nie mogę go wyłączyć nawet próbował z kodowaniem takim jak e.preventDefault (), ale bez rezultatu
Senthil Kumar Bhaskaran
Odpowiedzi:
194
Aby uniemożliwić kotwicy podążanie za określonym href, sugerowałbym użycie preventDefault():
Próbowałem z tymi "attr", działa tylko na elemencie formularza, a nie na tagu Anchor.
Senthil Kumar Bhaskaran
1
@senthil - PreventDefault jest uważany za `` właściwy '' sposób na zrobienie tego, zobacz moją edycję (link do innego pytania + odpowiedzi)
karim79
Właściwie moje kodowanie jest w Railsach, a moje kodowanie to <% = foo.add_associated_link ('Add email', @ project.email.build)%> kiedy renderuję go w przeglądarce, widzę wiadomość e-mail, ale nie mogę jej wyłączyć nawet próbował z kodowaniem takim jak e.preventDefault (), ale bez rezultatu
Senthil Kumar Bhaskaran
2
jak mam odwrócić $('a.something').on("click", function (e) { e.preventDefault(); });?
ア レ ッ ク ス
2
Nie zgadzam się, użyj CSS "pointer-events: none;" zamiast tego, tak jak w innych odpowiedziach.
vitrilo
116
Aplikacja, nad którą obecnie pracuję, obsługuje styl CSS w połączeniu z JavaScriptem.
a.disabled { color:gray;}
Wtedy, gdy chcę wyłączyć łącze, dzwonię
$('thelink').addClass('disabled');
Następnie w module obsługi kliknięcia dla tagu „thelink” zawsze najpierw sprawdzam
Czy w ostatniej linii nie powinno być napisane „return false”?
Prestaul
1
Dobry telefon, Prestaul. Kiedy jestem powiązany z tagiem <a>, używam: <a href="whthing" onclick="return disableLink(this)"> .. then: function disableLink (node) {if (dojo.hasClass (node, 'disabled') return false; dojo.addClass (node, 'disabled'); return true;} .. umożliwia to jednokrotne kliknięcie odsyłacza i wykonanie akcji (powrót true), a następnie uniemożliwia wykonanie czynności (zwraca fałsz)
Neek,
Zwróć uwagę, że w module obsługi prawdopodobnie powinieneś użyć $ (this) zamiast $ ("thelink"), ponieważ może to ulec zmianie lub użytkownik mógłby w ten sposób łatwo skopiować / wkleić kod.
Alexis Wilke
2
Zaproponuj także dodanie „kursora: domyślny” do wyłączonego stylu.
Myślę, że lepszym rozwiązaniem jest ustawienie wyłączonego atrybutu danych i zakotwiczenie sprawdzania go po kliknięciu. W ten sposób możemy tymczasowo wyłączyć kotwicę do czasu, gdy np. Javascript zostanie zakończone wywołaniem Ajax lub innymi obliczeniami. Jeśli jej nie wyłączymy, to możemy szybko w nią kliknąć kilka razy, co jest niepożądane ...
$('a').live('click',function(){var anchor = $(this);if(anchor.data("disabled")){returnfalse;}
anchor.data("disabled","disabled");
$.ajax({
url: url,
data: data,
cache:false,
success:function(json){// when it's done, we enable the anchor again
anchor.removeData("disabled");},
error:function(){// there was an error, enable the anchor
anchor.removeData("disabled");}});returnfalse;});
Również w przypadku zdarzeń pointer nie musisz uwzględniać stanu: hover, ponieważ jest to zdarzenie wskaźnika. Musisz tylko dodać selektor [wyłączony].
W sytuacjach, w których musisz umieścić tekst lub zawartość html w tagu kotwicy, ale po prostu nie chcesz, aby w ogóle podejmowano jakiekolwiek działanie po kliknięciu tego elementu (np. Gdy chcesz, aby łącze paginatora było wyłączone, ponieważ jest bieżąca strona), po prostu wytnij href. ;)
<a>3 (current page, I'm totally disabled!)</a>
Odpowiedź @ michael-meadows dała mi wskazówkę, ale jego nadal dotyczyło scenariuszy, w których nadal musisz / pracujesz z jQuery / JS. W takim przypadku, jeśli masz kontrolę nad pisaniem samego kodu HTML, po prostu x -owanie znacznika href jest wszystkim, co musisz zrobić, więc rozwiązaniem jest czysty HTML!
Inne rozwiązania bez finaglingu jQuery, które zachowują href, wymagają umieszczenia # w href, ale to powoduje, że strona przeskakuje na górę i po prostu chcesz, aby była po prostu stara wyłączona. Lub pozostawienie go pustego, ale w zależności od przeglądarki, to nadal robi takie rzeczy, jak przeskakiwanie na górę i jest to nieprawidłowy HTML według IDE. Ale najwyraźniej atag jest całkowicie prawidłowym kodem HTML bez HREF.
Na koniec możesz powiedzieć: OK, dlaczego po prostu nie po prostu zrzucić tagu a w całości niż? Ponieważ często nie możesz tego zrobić, atag jest używany do celów stylizacji w ramach CSS lub kontrolce, której używasz, na przykład w paginatorze Bootstrap:
następnie używając jquery możesz to zrobić, gdy chcesz wyświetlić tekst zamiast łącza.
var content = $(".MyLink").text();// or .html()
$(".MyLink").replaceWith("<div>"+ content +"</div>")
W ten sposób możemy po prostu zastąpić tag anchor tagiem div. Jest to znacznie łatwiejsze (tylko 2 wiersze) i poprawne semantycznie (ponieważ nie potrzebujemy teraz linku, dlatego nie powinno mieć linku)
Odpowiedzi:
Aby uniemożliwić kotwicy podążanie za określonym
href
, sugerowałbym użyciepreventDefault()
:Widzieć:
http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29
Zobacz także to poprzednie pytanie na SO:
jQuery wyłącz link
źródło
$('a.something').on("click", function (e) { e.preventDefault(); });
?Aplikacja, nad którą obecnie pracuję, obsługuje styl CSS w połączeniu z JavaScriptem.
Wtedy, gdy chcę wyłączyć łącze, dzwonię
Następnie w module obsługi kliknięcia dla tagu „thelink” zawsze najpierw sprawdzam
źródło
Znalazłem odpowiedź, że lubię dużo lepiej tutaj
Wygląda tak:
Włączenie wymagałoby ustawienia atrybutu href
Daje to wygląd, że element zakotwiczenia staje się zwykłym tekstem i odwrotnie.
źródło
źródło
Myślę, że lepszym rozwiązaniem jest ustawienie wyłączonego atrybutu danych i zakotwiczenie sprawdzania go po kliknięciu. W ten sposób możemy tymczasowo wyłączyć kotwicę do czasu, gdy np. Javascript zostanie zakończone wywołaniem Ajax lub innymi obliczeniami. Jeśli jej nie wyłączymy, to możemy szybko w nią kliknąć kilka razy, co jest niepożądane ...
Zrobiłem przykład jsfiddle: http://jsfiddle.net/wgZ59/76/
źródło
Wybrana odpowiedź nie jest dobra.
Użyj stylu CSS wskaźnika zdarzeń . (Jak zasugerował Rashad Annara)
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 zakotwiczenia wykona zadanie, jeśli masz globalną regułę CSS, taką jak:
źródło
Wypróbuj poniższe linie
Bo nawet jeśli wyłączysz
<a>
taghref
będzie działał, więc musiszhref
również usunąć .Jeśli chcesz włączyć, spróbuj poniżej linii
źródło
To tak proste, jak return false;
dawny.
lub
źródło
W pliku css
źródło
W przypadku wywołania tej metody domyślna akcja zdarzenia nie zostanie wyzwolona.
źródło
Jeśli próbujesz zablokować wszelką interakcję ze stroną, możesz zajrzeć do wtyczki jQuery BlockUI
źródło
Nigdy tak naprawdę nie sprecyzowałeś, w jaki sposób chcesz je wyłączyć lub co spowodowałoby wyłączenie.
Po pierwsze, chcesz dowiedzieć się, jak ustawić wartość na wyłączone, w tym celu użyjesz funkcji atrybutów JQuery i sprawisz , że ta funkcja zostanie uruchomiona w przypadku zdarzenia , takiego jak kliknięcie lub załadowanie dokumentu.
źródło
W sytuacjach, w których musisz umieścić tekst lub zawartość html w tagu kotwicy, ale po prostu nie chcesz, aby w ogóle podejmowano jakiekolwiek działanie po kliknięciu tego elementu (np. Gdy chcesz, aby łącze paginatora było wyłączone, ponieważ jest bieżąca strona), po prostu wytnij href. ;)
Odpowiedź @ michael-meadows dała mi wskazówkę, ale jego nadal dotyczyło scenariuszy, w których nadal musisz / pracujesz z jQuery / JS. W takim przypadku, jeśli masz kontrolę nad pisaniem samego kodu HTML, po prostu x -owanie znacznika href jest wszystkim, co musisz zrobić, więc rozwiązaniem jest czysty HTML!
Inne rozwiązania bez finaglingu jQuery, które zachowują href, wymagają umieszczenia # w href, ale to powoduje, że strona przeskakuje na górę i po prostu chcesz, aby była po prostu stara wyłączona. Lub pozostawienie go pustego, ale w zależności od przeglądarki, to nadal robi takie rzeczy, jak przeskakiwanie na górę i jest to nieprawidłowy HTML według IDE. Ale najwyraźniej
a
tag jest całkowicie prawidłowym kodem HTML bez HREF.Na koniec możesz powiedzieć: OK, dlaczego po prostu nie po prostu zrzucić tagu a w całości niż? Ponieważ często nie możesz tego zrobić,
a
tag jest używany do celów stylizacji w ramach CSS lub kontrolce, której używasz, na przykład w paginatorze Bootstrap:http://twitter.github.io/bootstrap/components.html#pagination
źródło
Tak więc, łącząc powyższe odpowiedzi, wymyśliłem to.
źródło
Jeśli nie potrzebujesz, aby zachowywał się jak tag kotwicy, wolałbym go w ogóle zastąpić. Na przykład, jeśli twój tag kotwicy jest podobny do
następnie używając jquery możesz to zrobić, gdy chcesz wyświetlić tekst zamiast łącza.
W ten sposób możemy po prostu zastąpić tag anchor tagiem div. Jest to znacznie łatwiejsze (tylko 2 wiersze) i poprawne semantycznie (ponieważ nie potrzebujemy teraz linku, dlatego nie powinno mieć linku)
źródło
Wyłącz lub włącz dowolny element z wyłączoną właściwością.
źródło