Jeśli nie chcesz, aby cokolwiek wskazywało, prawdopodobnie nie powinieneś używać <a>tagu (kotwica).
Jeśli chcesz, aby coś wyglądało jak link, ale nie zachowywało się jak łącze, najlepiej użyć odpowiedniego elementu (takiego jak <span>), a następnie nadać mu styl za pomocą CSS:
<spanclass="fake-link"id="fake-link-1">Am I a link?</span>
.fake-link {
color: blue;
text-decoration: underline;
cursor: pointer;
}
Ponadto, biorąc pod uwagę, że oznaczyłeś to pytanie jako „jQuery”, zakładam, że chcesz dołączyć moduł obsługi zdarzenia kliknięcia. Jeśli tak, po prostu zrób to samo, co powyżej, a następnie użyj czegoś takiego jak następujący JavaScript:
$('#fake-link-1').click(function(){/* put your code here */});
Występuje problem: nie pozwala na nawigację po kartach.
6
Zauważ, że (jak wskazuje Iraimbilanja) podejście span wyłącza możliwość wywołania funkcji za pomocą klawiatury, co uważam za problem z użytecznością.
Fredrik Mörk
3
Również problem z dostępnością. Możesz to rozwiązać za pomocą elementu przycisku (wygenerowanego z JavaScript, aby użytkownicy nie-JS nie otrzymali uszkodzonej kontroli).
Quentin
4
Oto szybkie rozwiązanie tego problemu: tabindex = "0" w elemencie niebędącym łączem umożliwi nawigację za pomocą klawiatury w większości nowoczesnych przeglądarek.
Mathias Bynens
1
Innym „problemem” jest to, że pseudoklasa CSS: hover nie będzie działać na elementach, które nie są linkami w IE6. Ale ponieważ i tak dodajesz te elementy za pomocą JavaScript (a przynajmniej powinieneś), równie dobrze możesz napisać skrypt, który dodaje klasę .hover do elementu po najechaniu kursorem.
Mathias Bynens
268
Istnieje kilka mniej niż doskonałych rozwiązań:
1. Link do fałszywej kotwicy
<ahref="#">
Problem: kliknięcie linku powoduje przejście z powrotem na górę strony
2. Używanie tagu innego niż „a”
Użyj tagu span i jQuery, aby obsłużyć kliknięcie
Problem: przerywa nawigację po klawiaturze, trzeba ręcznie zmienić kursor
Ponieważ wszystkie one mają swoje problemy, rozwiązaniem, na które się zdecydowałem, jest połączenie z fałszywą kotwicą, a następnie zwrócenie wartości false z metody onClick:
<ahref="#"onClick="returnfalse;">
Nie jest to najbardziej zwięzłe rozwiązanie, ale rozwiązuje wszystkie problemy z powyższymi metodami.
Zwykle używam javascript: void (0); podejście, ponieważ użycie znaku # wyświetla aktualny adres URL na pasku przeglądarki Firefox po najechaniu kursorem myszy, co może wprowadzać użytkownika w błąd.
lucaferrario
8
breaks when linking images in IECo to znaczy?
Eugene
14
@eugene to pytanie ma już 3 lata, ale IE powodowało, że obrazy znikały, gdy były otoczone linkiem do funkcji void. Nie jestem pewien, kiedy został naprawiony, ale działa w IE10, czyli wszystko, co zainstalowałem. Osobiście teraz używam<a href="javascript:;">
zaius
1
Tam też użyłem komentarzy: <a href="javascript:void(0); // Pokaż paletę właściwości">. W ten sposób, gdy użytkownik najedzie kursorem, zobaczy komentarz, który może dać mu wskazówkę, czego się spodziewać po kliknięciu. (Chociaż możesz też użyć podpowiedzi.)
Robin Zimmermann
5
Wygląda na href="javascript:"to, że to też wystarczy i działa w najnowszych głównych przeglądarkach. Nie ma potrzeby używania średnika, w rzeczywistości PhpStorm sugeruje nawet jego usunięcie.
Chociaż brzmi to tak, jakby było „właściwe”, ponieważ zatrzymuje bulgotanie zdarzeń, „return false” jest dużo mniej szczegółowe i robi to samo. Jedyny przypadek, w którym chciałbyś to zrobić, to jeśli masz już programy obsługi zdarzeń zarejestrowane do klikania linków za pośrednictwem jQuery.
aleemb
25
Jest na to wiele sposobów
Nie dodawaj i nie hrefprzypisuj
<aname="here"> Test <a>
Możesz dodać zdarzenie onclick zamiast href jak
<aname="here"onclick="YourFunction()"> Test <a>
Lub możesz dodać funkcję void, która byłaby najlepszym sposobem
Nie zapomnij ustawić stylu swojego znacznika kotwicy, jeśli usuniesz hrefatrybut, ponieważ nie będzie on już zachowywał się jak hiperłącze (nawet jeśli onclick nadal działa), będziesz musiał zresetować rzeczy takie jak cursor: pointer;i :hoverselektor.
Prawidłowa odpowiedź, umożliwia nawigację po zakładkach.
K - Toksyczność SO rośnie.
14
Ta odpowiedź powinna zostać zaktualizowana, aby odzwierciedlić nowe standardy sieciowe (HTML5).
To:
<atabindex="0">This represents a placeholder hyperlink</a>
... jest prawidłowym HTML5. Atrybut tabindex sprawia, że można go ustawić za pomocą klawiatury, tak jak zwykłe hiperłącza. Równie dobrze możesz użyć spando tego elementu, jak wspomniano wcześniej, ale uważam, że użycie aelementu jest bardziej eleganckie.
Jest to również poprawny HTML4, ale nie nadaje stylu kotwicy jako linku.
interjay
1
Nie wiedziałem, że to poprawny HTML4, ale specyfikacja HTML5 wyraźnie wspomina o przypadku użycia. Style, które nie są ukierunkowane na atrybut href, będą działać dobrze, problemem mogą być tylko domyślne style przeglądarki.
aross
1
Nie wywołuje to również clickzdarzenia, gdy użytkownik skupi się na elemencie i naciśnie klawisz Enter (testowane w przeglądarce Firefox 51).
torvin
@torvin, to proste. Skorzystaj z keydownwydarzenia.
aross
snazzy dziwactwo, ale w oknie 10 dodaje obramowane pudełko wokół elementu
1-14x0r
12
Oto trzy sposoby, <a>w jakie hrefwłaściwość tagu nie odwołuje się do niczego:
<ahref="JavaScript:void(0)"> link </a><ahref="javascript:;">link</a><ahref="#"onclick="returnfalse;"> Link </a>
Wiem, że to stare pytanie, ale pomyślałem, że i tak dodam moje dwa centy:
Zależy to od tego, co zrobi link, ale zazwyczaj wskazywałbym link na adres URL, który może wyświetlać / robić to samo, na przykład, jeśli robisz trochę o wyskakującym okienku:
W ten sposób bardzo stare przeglądarki (lub przeglądarki z wyłączoną obsługą JavaScript) mogą nadal przechodzić do oddzielnej strony about, ale co ważniejsze, Google również ją pobierze i zaindeksuje zawartość strony about.
Dziękuję Ci! To doskonale zadziałało w moim przypadku. Gdzie chciałem, aby tag kotwicy otwierał się w nowej karcie, gdy jest adres URL, ale nic, jeśli nie ma adresu URL. W przypadku # było to zaakceptowanie KLIKNIĘCIA i przeniesienie go na górę strony. Nie mając części href, jak sugerowałeś. To rozwiązało problem! Formatowanie wygląda świetnie ze względu na tag, problem z kliknięciami zniknął bez atrybutu href. Dziękuję Ci!!!
Mohsin
1
Jeśli ktoś zastanawia się, czy jest poprawny w HTML5, odpowiedź brzmi TAK :) stackoverflow.com/a/33046203/5323892 . Oto przykład ze strony standardów (patrz trzecia pozycja li): <nav> <ul> <li> <a href="https://stackoverflow.com/"> Strona główna </a> </li> <li> <a href = "/ news "> Aktualności </a> </li> <li> <a> Przykłady </a> </li> <li> <a href="https://stackoverflow.com/legal"> Informacje prawne </a> </li> </ ul> </nav>
Mohsin
Działa, ale jeśli chcesz, aby wskaźnik myszy zmienił się w palec, po prostu dodaj href = "JavaScript: void (0)" zgodnie z sugestią zawartą w odpowiedzi @Rutesh Makhijani.
Tarik
3
Jedyną rzeczą, która zadziałała dla mnie, była kombinacja powyższych:
to był mój tag kotwicy. więc zwracanie false na zdarzenie onClick = "" nie jest tutaj przydatne. Właśnie usunąłem właściwość href = "#" i działała ona tak jak poniżej
Napotkałem ten problem w witrynie WordPress. Nagłówki w menu rozwijanych zawsze miały atrybut, href=""a używana wtyczka nagłówka dopuszczała tylko standardowe adresy URL. Najłatwiejszym rozwiązaniem było po prostu uruchomienie tego kodu w stopce:
href
atrybutu at.Odpowiedzi:
Jeśli nie chcesz, aby cokolwiek wskazywało, prawdopodobnie nie powinieneś używać
<a>
tagu (kotwica).Jeśli chcesz, aby coś wyglądało jak link, ale nie zachowywało się jak łącze, najlepiej użyć odpowiedniego elementu (takiego jak
<span>
), a następnie nadać mu styl za pomocą CSS:Ponadto, biorąc pod uwagę, że oznaczyłeś to pytanie jako „jQuery”, zakładam, że chcesz dołączyć moduł obsługi zdarzenia kliknięcia. Jeśli tak, po prostu zrób to samo, co powyżej, a następnie użyj czegoś takiego jak następujący JavaScript:
źródło
Istnieje kilka mniej niż doskonałych rozwiązań:
1. Link do fałszywej kotwicy
Problem: kliknięcie linku powoduje przejście z powrotem na górę strony
2. Używanie tagu innego niż „a”
Użyj tagu span i jQuery, aby obsłużyć kliknięcie
Problem: przerywa nawigację po klawiaturze, trzeba ręcznie zmienić kursor
3. Link do funkcji void javascript
Problem: przerwy podczas łączenia obrazów w IE
Rozwiązanie
Ponieważ wszystkie one mają swoje problemy, rozwiązaniem, na które się zdecydowałem, jest połączenie z fałszywą kotwicą, a następnie zwrócenie wartości false z metody onClick:
Nie jest to najbardziej zwięzłe rozwiązanie, ale rozwiązuje wszystkie problemy z powyższymi metodami.
źródło
breaks when linking images in IE
Co to znaczy?<a href="javascript:;">
href="javascript:"
to, że to też wystarczy i działa w najnowszych głównych przeglądarkach. Nie ma potrzeby używania średnika, w rzeczywistości PhpStorm sugeruje nawet jego usunięcie.Aby w ogóle nic nie robił, użyj tego:
źródło
<a href="javascript:;">
. PS nie działatarget=_blank
jednakPrawidłowym sposobem rozwiązania tego problemu jest „zerwanie” łącza za pomocą jQuery podczas obsługi łącza
HTML
JS
Te dwa ostatnie wywołania uniemożliwiają przeglądarce interpretację kliknięcia.
źródło
Jest na to wiele sposobów
Nie dodawaj i nie
href
przypisujMożesz dodać zdarzenie onclick zamiast href jak
Lub możesz dodać funkcję void, która byłaby najlepszym sposobem
źródło
href
atrybut, ponieważ nie będzie on już zachowywał się jak hiperłącze (nawet jeśli onclick nadal działa), będziesz musiał zresetować rzeczy takie jakcursor: pointer;
i:hover
selektor.Co masz na myśli przez nic?
lub
źródło
Myślę, że możesz spróbować
Jedyny haczyk, jaki tutaj widzę, to wysoki poziom zabezpieczeń przeglądarki, który może monitować o wykonanie javascript.
Chociaż jest to jeden z łatwiejszych sposobów niż
powinno to być używane oszczędnie
Przeczytaj ten artykuł, aby uzyskać wskazówki https://web.archive.org/web/20090301044015/http://blog.reindel.com/2006/08/11/a-hrefjavascriptvoid0-avoid-the-void
źródło
Ta odpowiedź powinna zostać zaktualizowana, aby odzwierciedlić nowe standardy sieciowe (HTML5).
To:
... jest prawidłowym HTML5. Atrybut tabindex sprawia, że można go ustawić za pomocą klawiatury, tak jak zwykłe hiperłącza. Równie dobrze możesz użyć
span
do tego elementu, jak wspomniano wcześniej, ale uważam, że użyciea
elementu jest bardziej eleganckie.Zobacz: https://w3c.github.io/html-reference/a.html
i: https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-href
źródło
click
zdarzenia, gdy użytkownik skupi się na elemencie i naciśnie klawisz Enter (testowane w przeglądarce Firefox 51).keydown
wydarzenia.Oto trzy sposoby,
<a>
w jakiehref
właściwość tagu nie odwołuje się do niczego:źródło
Wiem, że to stare pytanie, ale pomyślałem, że i tak dodam moje dwa centy:
Zależy to od tego, co zrobi link, ale zazwyczaj wskazywałbym link na adres URL, który może wyświetlać / robić to samo, na przykład, jeśli robisz trochę o wyskakującym okienku:
Następnie z jQuery
W ten sposób bardzo stare przeglądarki (lub przeglądarki z wyłączoną obsługą JavaScript) mogą nadal przechodzić do oddzielnej strony about, ale co ważniejsze, Google również ją pobierze i zaindeksuje zawartość strony about.
źródło
Upewnij się, że wszystkie linki, które chcesz przestać, mają
href="#!"
(lub cokolwiek chcesz, naprawdę), a następnie użyj tego:źródło
Możesz mieć kotwicę HTML (
a
tag) bezhref
atrybutu. Pozostawhref
atrybut, a nie będzie on do niczego prowadzić:źródło
Jedyną rzeczą, która zadziałała dla mnie, była kombinacja powyższych:
Najpierw li przy ul
Następnie w LoadTab2_1 ręcznie przełączyłem karty div
Dzieje się tak dlatego, że odłączenie się odłącza również akcję w zakładkach
Musisz także ręcznie zmienić styl karty, gdy główna karta zmieni rzeczy
źródło
Możesz to zrobić przez
źródło
to był mój tag kotwicy. więc zwracanie false na zdarzenie onClick = "" nie jest tutaj przydatne. Właśnie usunąłem właściwość href = "#" i działała ona tak jak poniżej
i musiałem dodać ten CSS.
źródło
Napotkałem ten problem w witrynie WordPress. Nagłówki w menu rozwijanych zawsze miały atrybut,
href=""
a używana wtyczka nagłówka dopuszczała tylko standardowe adresy URL. Najłatwiejszym rozwiązaniem było po prostu uruchomienie tego kodu w stopce:Dzięki temu puste kotwice nie będą cokolwiek robić.
źródło
React nie obsługuje już używania takiej funkcji
href="javascript:void(0)"
w tagu kotwicy, ale tutaj jest coś, co działa całkiem nieźle.źródło
Wiem, że to jest oznaczone jako pytanie jQuery, ale możesz odpowiedzieć na to również za pomocą AngularJS.
w swoim elemencie dodaj dyrektywę ng-click i użyj zmiennej $ event, która jest zdarzeniem kliknięcia ... zapobiegaj jej domyślnemu zachowaniu:
Możesz nawet przekazać zmienną $ event do funkcji:
w tej funkcji robisz, co chcesz ze zdarzeniem kliknięcia.
źródło