Wenn Sie nicht möchten, dass es auf irgendetwas verweist, sollten Sie wahrscheinlich nicht das <a>(Anker-) Tag verwenden.
Wenn Sie möchten, dass etwas wie ein Link aussieht, sich aber nicht wie ein Link verhält, verwenden Sie am besten das entsprechende Element (z. B. <span>) und formatieren Sie es dann mit CSS:
<spanclass="fake-link"id="fake-link-1">Am I a link?</span>
.fake-link {
color: blue;
text-decoration: underline;
cursor: pointer;
}
Da Sie diese Frage mit "jQuery" markiert haben, gehe ich davon aus, dass Sie einen Klickereignishander anhängen möchten. Wenn ja, machen Sie einfach dasselbe wie oben und verwenden Sie dann etwas wie das folgende JavaScript:
$('#fake-link-1').click(function(){/* put your code here */});
Dies hat ein Problem: Es erlaubt keine Tab-Navigation.
6
Beachten Sie, dass (wie Iraimbilanja betont) der Span-Ansatz hier die Möglichkeit deaktiviert, die Funktion über die Tastatur aufzurufen, was ich als Usability-Problem betrachten würde.
Fredrik Mörk
3
Auch ein Zugänglichkeitsproblem. Sie können das Problem mithilfe eines Schaltflächenelements beheben (das aus JavaScript generiert wurde, damit Nicht-JS-Benutzer kein fehlerhaftes Steuerelement erhalten).
Quentin
4
Hier ist eine schnelle Lösung dafür: tabindex = "0" für ein Nicht-Link-Element ermöglicht die Tastaturnavigation in den meisten modernen Browsern.
Mathias Bynens
1
Ein weiteres Problem ist, dass Sie das CSS nicht verwenden: Die Hover-Pseudoklasse funktioniert nicht mit Elementen, die keine Links in IE6 sind. Da Sie diese Elemente jedoch ohnehin über JavaScript hinzufügen (zumindest sollten Sie dies tun), können Sie auch ein Skript schreiben, das dem Element beim Bewegen des Mauszeigers eine .hover-Klasse hinzufügt.
Mathias Bynens
268
Es gibt einige weniger als perfekte Lösungen:
1. Link zu einem falschen Anker
<ahref="#">
Problem: Durch Klicken auf den Link wird wieder an den Anfang der Seite gesprungen
2. Verwenden eines anderen Tags als 'a'
Verwenden Sie ein span-Tag und die jquery, um den Klick zu verarbeiten
Problem: Bricht die Tastaturnavigation ab, muss den Hover-Cursor manuell ändern
Problem: Unterbrechungen beim Verknüpfen von Bildern im IE
Lösung
Da diese alle ihre Probleme haben, besteht die Lösung, die ich beschlossen habe, darin, eine Verknüpfung zu einem gefälschten Anker herzustellen und dann von der onClick-Methode false zurückzugeben:
<ahref="#"onClick="returnfalse;">
Nicht die prägnanteste Lösung, aber sie löst alle Probleme mit den oben genannten Methoden.
Normalerweise benutze ich das Javascript: void (0); Ansatz, da bei Verwendung von # die aktuelle URL in der Firefox-Leiste mit der Maus angezeigt wird, was für den Benutzer irreführend sein kann.
Lucaferrario
8
breaks when linking images in IEWas bedeutet das?
Eugene
14
@eugene Diese Frage ist jetzt 3 Jahre alt, aber IE hat verwendet, um Bilder verschwinden zu lassen, wenn sie von einem Link zu einer Leerenfunktion umgeben sind. Ich bin mir nicht sicher, wann es behoben wurde, aber es funktioniert in IE10, was alles ist, was ich installiert habe. Ich persönlich benutze jetzt<a href="javascript:;">
zaius
1
Ich habe dort auch Kommentare verwendet: <a href="javascript:void(0); // Eigenschaftenpalette anzeigen">. Auf diese Weise sehen Benutzer beim Bewegen des Mauszeigers den Kommentar, der ihnen einen Hinweis geben kann, was sie beim Klicken erwarten können. (Obwohl Sie auch einen Tooltip verwenden könnten.)
Robin Zimmermann
5
Es scheint, dass dies href="javascript:"auch ausreicht und in den neuesten gängigen Browsern funktioniert. Das Semikolon ist nicht erforderlich, PhpStorm schlägt sogar vor, es zu entfernen.
Uhr
40
Verwenden Sie Folgendes, damit es überhaupt nichts tut:
Während das so klingt, als wäre es "richtig", weil es das Sprudeln von Ereignissen stoppt, ist "return false" viel weniger ausführlich und macht dasselbe. Sie möchten dies nur tun, wenn Sie bereits Ereignishandler registriert haben, die über jQuery auf Links klicken.
Aleemb
25
Es gibt so viele Möglichkeiten, es so zu machen
Nicht hinzufügen und hrefzuordnen
<aname="here"> Test <a>
Sie können onclick event anstelle von href like hinzufügen
<aname="here"onclick="YourFunction()"> Test <a>
Oder Sie können eine leere Funktion wie diese hinzufügen, was der beste Weg wäre
Dies ist eine Abzocke bereits vorhandener Antworten
über den
1
Vergessen Sie nicht, den Stil Ihres hrefAnkertags festzulegen, wenn Sie das Attribut entfernen , da es sich nicht mehr wie ein Hyperlink verhält (obwohl der Onclick immer noch funktioniert). Sie müssen Dinge wie cursor: pointer;und den :hoverSelektor zurücksetzen .
Diese Antwort sollte aktualisiert werden, um neuen Webstandards (HTML5) Rechnung zu tragen.
Dies:
<atabindex="0">This represents a placeholder hyperlink</a>
... ist gültiges HTML5. Das tabindex-Attribut macht die Tastatur wie normale Hyperlinks fokussierbar. Sie können das spanElement auch wie oben erwähnt verwenden, aber ich finde die Verwendung des aElements eleganter.
Dies ist auch gültiges HTML4, aber der Anker wird nicht als Link formatiert.
Interjay
1
Ich wusste nicht, dass es sich um gültiges HTML4 handelt, aber in der HTML5-Spezifikation wird der Anwendungsfall ausdrücklich erwähnt. Und Stile, die nicht auf das href-Attribut abzielen, funktionieren einwandfrei. Möglicherweise sind nur die Standard-Browser-Stile ein Problem.
Aross
1
Dies löst auch kein clickEreignis aus, wenn der Benutzer das Element fokussiert und die Eingabetaste drückt (getestet in Firefox 51).
Torvin
@ Torvin, das ist einfach. Verwenden Sie das keydownEreignis.
Über
pfiffige Eigenart, aber in Fenster 10 fügt es einen Rahmen um das Element
1-14x0r
12
Hier sind die drei Möglichkeiten, wie sich <a>die hrefTag-Eigenschaft des Tags auf nichts bezieht:
<ahref="JavaScript:void(0)"> link </a><ahref="javascript:;">link</a><ahref="#"onclick="returnfalse;"> Link </a>
Ich weiß, dass dies eine alte Frage ist, aber ich dachte, ich würde trotzdem meine zwei Cent hinzufügen:
Es hängt davon ab, was der Link tun wird, aber normalerweise würde ich den Link auf eine URL verweisen, die möglicherweise dasselbe anzeigt / tut, zum Beispiel, wenn Sie ein wenig über Box-Popup machen:
Auf diese Weise können sehr alte Browser (oder Browser mit deaktiviertem JavaScript) weiterhin zu einer separaten Info-Seite navigieren. Noch wichtiger ist jedoch, dass Google diese aufnimmt und den Inhalt der Info-Seite crawlt.
Stellen Sie sicher, dass alle Ihre Links, die Sie beenden möchten, vorhanden sind href="#!"(oder wirklich alles, was Sie möchten), und verwenden Sie dann Folgendes:
Danke dir! Es hat perfekt für meinen Fall funktioniert. Wo ich wollte, dass das Anchor-Tag in einem neuen Tab geöffnet wird, wenn eine URL vorhanden ist, aber nichts, wenn keine URL vorhanden ist. Im Fall von # wurde ein KLICK akzeptiert und an den Anfang der Seite verschoben. Ich habe kein href-Teil, wie Sie vorgeschlagen haben. Es hat das Problem gelöst! Die Formatierung sieht aufgrund eines Tags großartig aus. Klicken Sie auf ein Problem ohne href. Danke dir!!!
Mohsin
1
Wenn jemand anderes denkt, ob HTML5 gültig ist, lautet die Antwort JA :) stackoverflow.com/a/33046203/5323892 . Hier ein Beispiel aus der Standardseite (siehe 3. Punkt): <nav> <ul> <li> <a href="https://stackoverflow.com/"> Startseite </a> </ li> <li> <a href = "/ Nachrichten "> Nachrichten </a> </ li> <li> <a> Beispiele </a> </ li> <li> <a href="https://stackoverflow.com/legal"> Legal </a> </ li> </ ul> </ nav>
Mohsin
Es funktioniert, aber wenn Sie möchten, dass sich der Mauszeiger in Finger ändert, fügen Sie einfach href = "JavaScript: void (0)" hinzu, wie in der Antwort von @Rutesh Makhijani vorgeschlagen.
Tarik
3
Das einzige, was für mich funktioniert hat, war eine Kombination der oben genannten:
Das war mein Ankertag. Geben Sie also false zurück, wenn das Ereignis onClick = "" hier nicht hilfreich ist. Ich habe gerade die Eigenschaft href = "#" entfernt und es hat bei mir genauso funktioniert wie unten
Was meinst du damit? Was wird empfohlen und warum?
Burk
Es ist eine gute Praxis, Javascript und HTML in separaten Dateien zu speichern. Hier ist eine detaillierte Antwort: stackoverflow.com/questions/5871640/…
Alexandru Severin
1
Ich bin auf einer WordPress-Site auf dieses Problem gestoßen. Die Header in Dropdown-Menüs hatten immer das Attribut href=""und das verwendete Header-Plugin erlaubte nur Standard-URLs. Die einfachste Lösung bestand darin, diesen Code in der Fußzeile auszuführen:
Ich weiß, dass dies als jQuery-Frage markiert ist, aber Sie können dies auch mit AngularJS beantworten.
Fügen Sie in Ihrem Element die Anweisung ng-click hinzu und verwenden Sie die Variable $ event, die das Klickereignis ist. Verhindern Sie das Standardverhalten:
<ahref="#"ng-click="$event.preventDefault()">
Sie können die Variable $ event sogar an eine Funktion übergeben:
<ahref="#"ng-click="doSomething($event)">
In dieser Funktion machen Sie mit dem Klickereignis, was Sie wollen.
href
Attribut nicht darin.Antworten:
Wenn Sie nicht möchten, dass es auf irgendetwas verweist, sollten Sie wahrscheinlich nicht das
<a>
(Anker-) Tag verwenden.Wenn Sie möchten, dass etwas wie ein Link aussieht, sich aber nicht wie ein Link verhält, verwenden Sie am besten das entsprechende Element (z. B.
<span>
) und formatieren Sie es dann mit CSS:Da Sie diese Frage mit "jQuery" markiert haben, gehe ich davon aus, dass Sie einen Klickereignishander anhängen möchten. Wenn ja, machen Sie einfach dasselbe wie oben und verwenden Sie dann etwas wie das folgende JavaScript:
quelle
Es gibt einige weniger als perfekte Lösungen:
1. Link zu einem falschen Anker
Problem: Durch Klicken auf den Link wird wieder an den Anfang der Seite gesprungen
2. Verwenden eines anderen Tags als 'a'
Verwenden Sie ein span-Tag und die jquery, um den Klick zu verarbeiten
Problem: Bricht die Tastaturnavigation ab, muss den Hover-Cursor manuell ändern
3. Link zu einer Javascript-Void-Funktion
Problem: Unterbrechungen beim Verknüpfen von Bildern im IE
Lösung
Da diese alle ihre Probleme haben, besteht die Lösung, die ich beschlossen habe, darin, eine Verknüpfung zu einem gefälschten Anker herzustellen und dann von der onClick-Methode false zurückzugeben:
Nicht die prägnanteste Lösung, aber sie löst alle Probleme mit den oben genannten Methoden.
quelle
breaks when linking images in IE
Was bedeutet das?<a href="javascript:;">
href="javascript:"
auch ausreicht und in den neuesten gängigen Browsern funktioniert. Das Semikolon ist nicht erforderlich, PhpStorm schlägt sogar vor, es zu entfernen.Verwenden Sie Folgendes, damit es überhaupt nichts tut:
quelle
<a href="javascript:;">
. PS funktioniert nicht mit ,target=_blank
obwohlDer richtige Weg, dies zu handhaben, besteht darin, den Link mit jQuery zu "unterbrechen", wenn Sie den Link behandeln
HTML
JS
Diese letzten beiden Aufrufe stoppen den Browser, der den Klick interpretiert.
quelle
Es gibt so viele Möglichkeiten, es so zu machen
Nicht hinzufügen und
href
zuordnenSie können onclick event anstelle von href like hinzufügen
Oder Sie können eine leere Funktion wie diese hinzufügen, was der beste Weg wäre
quelle
href
Ankertags festzulegen, wenn Sie das Attribut entfernen , da es sich nicht mehr wie ein Hyperlink verhält (obwohl der Onclick immer noch funktioniert). Sie müssen Dinge wiecursor: pointer;
und den:hover
Selektor zurücksetzen .Was meinst du mit nichts?
oder
quelle
Ich denke du kannst es versuchen
Der einzige Haken, den ich hier sehe, ist die hohe Browsersicherheit, die möglicherweise zur Ausführung von Javascript führt.
Dies ist jedoch einer der einfacheren Wege als
Dies sollte sparsam verwendet werden
Lesen Sie diesen Artikel für einige Hinweise https://web.archive.org/web/20090301044015/http://blog.reindel.com/2006/08/11/a-hrefjavascriptvoid0-avoid-the-void
quelle
Diese Antwort sollte aktualisiert werden, um neuen Webstandards (HTML5) Rechnung zu tragen.
Dies:
... ist gültiges HTML5. Das tabindex-Attribut macht die Tastatur wie normale Hyperlinks fokussierbar. Sie können das
span
Element auch wie oben erwähnt verwenden, aber ich finde die Verwendung desa
Elements eleganter.Siehe: https://w3c.github.io/html-reference/a.html
und: https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-href
quelle
click
Ereignis aus, wenn der Benutzer das Element fokussiert und die Eingabetaste drückt (getestet in Firefox 51).keydown
Ereignis.Hier sind die drei Möglichkeiten, wie sich
<a>
diehref
Tag-Eigenschaft des Tags auf nichts bezieht:quelle
Ich weiß, dass dies eine alte Frage ist, aber ich dachte, ich würde trotzdem meine zwei Cent hinzufügen:
Es hängt davon ab, was der Link tun wird, aber normalerweise würde ich den Link auf eine URL verweisen, die möglicherweise dasselbe anzeigt / tut, zum Beispiel, wenn Sie ein wenig über Box-Popup machen:
Dann mit jQuery
Auf diese Weise können sehr alte Browser (oder Browser mit deaktiviertem JavaScript) weiterhin zu einer separaten Info-Seite navigieren. Noch wichtiger ist jedoch, dass Google diese aufnimmt und den Inhalt der Info-Seite crawlt.
quelle
Stellen Sie sicher, dass alle Ihre Links, die Sie beenden möchten, vorhanden sind
href="#!"
(oder wirklich alles, was Sie möchten), und verwenden Sie dann Folgendes:quelle
Sie können einen HTML-Anker (
a
Tag) ohnehref
Attribut haben. Lassen Sie dashref
Attribut weg und es wird nichts verknüpft:quelle
Das einzige, was für mich funktioniert hat, war eine Kombination der oben genannten:
Zuerst das li in der ul
Dann habe ich im LoadTab2_1 die Tab-Divs manuell gewechselt
Dies liegt daran, dass durch das Trennen der auch die Aktion in den Registerkarten getrennt wird
Sie müssen das Tab-Styling auch manuell durchführen, wenn die primäre Registerkarte Änderungen vornimmt
quelle
Sie können es tun, indem Sie
quelle
Das war mein Ankertag. Geben Sie also false zurück, wenn das Ereignis onClick = "" hier nicht hilfreich ist. Ich habe gerade die Eigenschaft href = "#" entfernt und es hat bei mir genauso funktioniert wie unten
und ich musste dieses CSS hinzufügen.
quelle
Ich bin auf einer WordPress-Site auf dieses Problem gestoßen. Die Header in Dropdown-Menüs hatten immer das Attribut
href=""
und das verwendete Header-Plugin erlaubte nur Standard-URLs. Die einfachste Lösung bestand darin, diesen Code in der Fußzeile auszuführen:Dies verhindert, dass leere Anker etwas tun.
quelle
Reagieren Sie nicht mehr mit einer Funktion wie dieser
href="javascript:void(0)"
in Ihrem Ankertag, aber hier ist etwas, das ziemlich gut funktioniert.quelle
Ich weiß, dass dies als jQuery-Frage markiert ist, aber Sie können dies auch mit AngularJS beantworten.
Fügen Sie in Ihrem Element die Anweisung ng-click hinzu und verwenden Sie die Variable $ event, die das Klickereignis ist. Verhindern Sie das Standardverhalten:
Sie können die Variable $ event sogar an eine Funktion übergeben:
In dieser Funktion machen Sie mit dem Klickereignis, was Sie wollen.
quelle