Ich habe ein Tag <a href="#"> Previous </a> 1 2 3 4 <a href="#"> Next </a>
und möchte unter bestimmten Umständen, dass dieses Tag vollständig deaktiviert wird.
Code aus Kommentaren (so wird der Link generiert)
if (n_index != n_pages)
a = a+'<li><a href="#" onclick="javascript:paginateAjaxPage('+(n_index+1) +','+stype+');">></a></li><li><a href="#" onclick="javascript:paginateAjaxPage('+n_pages+','+stype+');" >>></a></li>';
else
a = a+'<li><a style="cursor: pointer;" onclick="return false;">></a></li><li><a style="cursor: pointer;" onclick="return false" >>></a></li>';
a = a+'</ul></div>';
javascript
html
Krieger
quelle
quelle
Antworten:
Versuchen Sie dies, wenn der Benutzer beim Klicken nicht umleiten soll
quelle
<a href='javascript:;'>I am a shorter useless link</a>
?\t
, Zeilenvorschüben\n
und Leerzeichen ein, um nur den Code gefaltet und nett zu sehen (für wen? Browser), und sorgen sich jetzt um 7 Bytesvoid(0)
und / oder einen;
Gott.Millions millions of tabs\t, line feeds\n and spaces
macht dies den Code leicht verständlich,void(0)
ist es aber nicht. Deshalb sollte dies entfernt werden oder muss so kurz wie möglich sein. ZB hier kürzer - dient zum Verstehen (Lesen) nicht der "Komprimierung" oder Byte-Ecomony. :)Sie können alle Links auf einer Seite mit dieser Stilklasse deaktivieren:
Jetzt besteht der Trick natürlich darin, die Links nur dann zu deaktivieren, wenn Sie dies benötigen. So geht's:
Verwenden Sie eine leere A-Klasse wie folgt:
Wenn Sie dann die Links deaktivieren möchten, gehen Sie folgendermaßen vor:
HINWEIS: CSS-Regelnamen werden in einigen Browsern in Kleinbuchstaben umgewandelt. Bei diesem Code wird zwischen Groß- und Kleinschreibung unterschieden. Verwenden Sie daher besser Klassennamen in Kleinbuchstaben
Links reaktivieren:
Informationen zur Browserkompatibilität finden Sie auf dieser Seite unter http://caniuse.com/pointer-events
Ich denke, dies ist der beste Weg, dies zu tun, aber leider wird der IE es wie immer nicht zulassen :) Ich poste dies trotzdem, weil ich denke, dass dies Informationen enthält, die nützlich sein können, und weil einige Projekte einen bekannten Browser verwenden B. wenn Sie Webansichten auf Mobilgeräten verwenden.
Wenn Sie nur EINEN Link deaktivieren möchten (ich weiß nur, dass dies die Frage war), würde ich eine Funktion verwenden, die die URL der aktuellen Seite basierend auf dieser Bedingung manuell festlegt oder nicht. (wie die Lösung, die Sie akzeptiert haben)
Diese Frage war viel einfacher als ich dachte :)
quelle
pointer-events:none;
Ich muss mich bei Ihnen für das bedanken, was ich nie über diesen Tag gewusst habe.Sie können ihm einfach einen leeren Hash geben:
oder wenn das nicht gut genug für eine "Deaktivierung" ist, verwenden Sie einen Ereignishandler:
quelle
1
wenn eines später hinzugefügt wird.Versuchen Sie dies mit jQuery:
quelle
quelle
Ich finde diesen Weg einfacher zu implementieren. Und es hat den Vorteil, dass Sie js. Befindet sich nicht in Ihrem HTML, sondern in einer anderen Datei. Ich denke das ohne das Unbinden. Beide Ereignisse sind noch aktiv. Nicht sicher. Aber in gewisser Weise brauchen Sie nur dieses eine Ereignis
quelle
unbind
notwendig? Ich glaubereturn false
odere.preventDefault()
würde ausreichen.Der einfachste Weg, einen Link zu deaktivieren, besteht darin, ihn einfach nicht anzuzeigen. Führen Sie diese Funktion aus, wenn Sie testen möchten, ob Ihre Bedingung erfüllt ist, um die Schaltfläche Zurück auszublenden (durch
if (true)
Ihre Bedingung ersetzen ):Führen
testHideNav()
Sie dann aus, wann immer Sie überprüfen müssen, ob sich Ihr Zustand geändert hat.quelle
MDN empfiehlt
element.removeAttribute(attrName);
, das Attribut nicht auf null (oder einen anderen Wert) zu setzen, wenn Sie es deaktivieren möchten. In diesem Fall wäre eselement.removeAttribute("href");
https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute
quelle
Verwenden Sie stattdessen einen Span- und einen Javascript-Klick. Einige Browser "springen", wenn Sie einen Link und "#" href haben.
quelle
javascript: void(0);
oderjavascript:;
. Wenn Sie von Rails rendern, rendern Sie stattdessen einfach einen Bereich, in dem Sie ihn deaktivieren möchten.Dies ist auch möglich:
Link geht nirgendwo hin, indem Ihre Funktion ausgeführt wird.
quelle
Ich hatte ein ähnliches Bedürfnis, aber meine Motivation war es, zu verhindern, dass der Link doppelt angeklickt wird. Ich habe es mit jQuery geschafft:
Der HTML-Code sieht folgendermaßen aus:
quelle
Die oben genannten Lösungen führen dazu, dass der Link nicht funktioniert, machen jedoch nicht sichtbar (AFAICT), dass der Link nicht mehr gültig ist. Ich habe eine Situation, in der ich eine Reihe von Seiten habe und den Link, der auf die aktuelle Seite verweist, deaktivieren (und deutlich machen möchte, dass er deaktiviert ist).
So:
Dies geht durch die Liste der Links, findet diejenige, die auf die aktuelle Seite verweist (n_root3 ist möglicherweise eine lokale Sache, aber ich stelle mir vor,
document
dass sie etwas Ähnliches haben muss) und ersetzt den Link durch den Inhalt des Linktextes.HTH
quelle
Danke euch allen...
Mein Problem wurde durch den folgenden Code gelöst:
quelle
Installieren Sie dieses Plugin für jquery und verwenden Sie es
http://plugins.jquery.com/project/jqueryenabledisable
Sie können so ziemlich jedes Feld auf der Seite deaktivieren / aktivieren.
Wenn Sie eine Seite unter bestimmten Bedingungen öffnen möchten, schreiben Sie eine Java-Skriptfunktion und rufen Sie sie von href aus auf. Wenn die Bedingung erfüllt ist, öffnen Sie die Seite, sonst tun Sie einfach nichts.
Code sieht so aus:
Sie können den Link auch in ein div einfügen und die Anzeigeeigenschaft des Style-Attributs auf none setzen. Dies wird die Div verbergen. Zum Beispiel
Dadurch wird der Link ausgeblendet. Verwenden Sie eine Schaltfläche oder ein Bild, um dieses Div jetzt sichtbar zu machen, indem Sie diese Funktion in onclick wie folgt aufrufen:
Sie können dem HTML-Tag auch ein ID-Tag hinzufügen
Und erhalten Sie diese ID in Ihrem Javascript mit
Eines davon muss auf jeden Fall funktionieren, haha
quelle
Eine andere Methode zum Deaktivieren der Verknüpfung
Ankertag ohne href würde als deaktivierter / einfacher Text reagieren
anstatt
<a href="#"> with href </a>
siehe jsFiddel
hoffe, das ist hilfreich.
quelle
Anstelle von void können Sie auch Folgendes verwenden:
quelle
0) Sie sollten sich besser daran erinnern, dass einige Browser "springen", wenn Sie einen Link und "#" href haben. Der beste Weg wäre also ein benutzerdefiniertes JavaScript
1) Wenn Sie nach dem benutzerdefinierten JavaScript , hier ist es:
2) Sie können Folgendes vermeiden
oder
Weil das Javascript-Pseudoprotokoll die Seite in einigen Browsern in einen Wartezustand versetzen kann, was unerwartete Folgen haben kann. IE6 ist dafür bekannt. Aber wenn Sie sich nicht für IE6 interessieren und alles testen, ist dies möglicherweise eine gute Lösung.
3) Wenn Sie bereits
jQuery
undbootstrap
in Ihrem Projekt haben, können Sie die Verwendung folgendermaßen prüfen:Wo
.disabled
Klasse kommt von Bootstrap.Qupte Form Bootstrap Site ( hier )
und das
custom JavaScript
wurde in Abschnitt 1 gezeigtquelle
Unten Code für deaktivierte Links:
Eine andere sehr einfache Lösung ist:
Die erste Lösung ist effizient.
quelle