Ich versuche zu verhindern, dass der Browser den :hover
Effekt des CSS über JavaScript nutzt .
Ich habe die a
und a:hover
-Stile in meinem CSS festgelegt, da ich einen Hover-Effekt möchte, wenn JS nicht verfügbar ist. Aber wenn JS ist verfügbar, möchte ich mit einem meiner CSS Hover - Effekt zu überschreiben glattere ein (mit dem jQuery Farbe zum Beispiel Plugin.)
Ich habe es versucht:
$("ul#mainFilter a").hover(
function(e){ e.preventDefault(); ...do my stuff... },
function(e){ e.preventDefault(); ...do my stuff... });
Ich habe es auch mit versucht return false;
, aber es funktioniert nicht.
Hier ist ein Beispiel für mein Problem: http://jsfiddle.net/4rEzz/ . Der Link sollte nur verblassen, ohne grau zu werden.
Wie von fudgey erwähnt, besteht eine Problemumgehung darin, die Schwebestile mithilfe von zurückzusetzen, .css()
aber ich müsste jede einzelne Eigenschaft, die im CSS angegeben ist, überschreiben (siehe hier: http://jsfiddle.net/raPeX/1/ ). Ich suche eine generische Lösung.
Weiß jemand, wie man das macht?
PS: Ich möchte nicht jeden Stil überschreiben, den ich für den Hover festgelegt habe.
quelle
<noscript>
Lösung. Sie setzen einfach<link>
Tags in Ihre<noscript>
anstelle von<style>
Tags. Mit meiner Lösung können Sie jedoch alles in einer Stylesheet-Datei und nicht in mehreren Dateien behalten.Verwenden Sie eine zweite Klasse, der nur der Schwebeflug zugewiesen ist:
HTML
CSS
Jetzt können Sie die Klasse mit Jquery entfernen, beispielsweise wenn auf das Element geklickt wurde:
JQUERY
Hoffe diese Antwort ist hilfreich.
quelle
Sie können die Stylesheets und Stylesheet-Regeln selbst mit Javascript bearbeiten
Wenn Sie die Attribute wichtig machen und dies zur allerletzten CSS-Definition machen, sollte jede vorherige Definition außer Kraft gesetzt werden, es sei denn, eine ist spezifischer ausgerichtet. In diesem Fall müssen Sie möglicherweise weitere Regeln einfügen.
quelle
<link>
Tag in einem<noscript>
Element? Das würde funktionieren, oder?Error: The operation is insecure.
Dies ähnelt der Antwort von aSeptik, aber was ist mit diesem Ansatz? Wickeln Sie den CSS-Code, den Sie mit JavaScript deaktivieren möchten, in
<noscript>
Tags ein. Auf diese Weise wird bei deaktiviertem:hover
JavaScript das CSS verwendet, andernfalls wird der JavaScript-Effekt verwendet.Beispiel:
quelle
Ich habe den
not()
CSS-Operator und dieaddClass()
Funktion von jQuery verwendet. Hier ist ein Beispiel: Wenn Sie auf ein Listenelement klicken, wird es nicht mehr schweben:Beispielsweise:
HTML
CSS
jQuery
quelle
Ich würde CSS verwenden, um zu verhindern, dass das Ereignis: hover das Erscheinungsbild des Links ändert.
Dieses einfache CSS bedeutet, dass die Links immer schwarz und nicht unterstrichen sind. Ich kann anhand der Frage nicht sagen, ob die Änderung des Erscheinungsbilds das einzige ist, was Sie steuern möchten.
quelle
Ich würde empfehlen, alle
:hover
Eigenschaften zu ersetzen ,:active
wenn Sie feststellen, dass das Gerät Touch unterstützt. Rufen Sie diese Funktion einfach auf, wenn Sie dies tuntouch()
.quelle
Versuchen Sie einfach die Linkfarbe einzustellen:
Bearbeiten: oder noch besser, verwenden Sie das CSS, wie Christopher vorgeschlagen hat
quelle
a
anstatt zuul#mainFilter a
sagen, ob dies das ist, was Sie meinen, oder sagen Sie, dass jeder Link auf der Seite eine andere Farbe hat?a.jsOverride:hover
, die alle CSS-Eigenschaften überschreibt, sodass die JS diesejsOverride
Klasse nur zu allen Links hinzufügen müssen, wenn die SeiteEine andere Möglichkeit, dies zu lösen, könnte darin bestehen, das CSS mit zu überschreiben
insertRule
.Es bietet die Möglichkeit, CSS-Regeln in ein vorhandenes / neues Stylesheet einzufügen. In meinem konkreten Beispiel würde es so aussehen:
Demo mit meinem 4 Jahre alten Originalbeispiel: http://jsfiddle.net/raPeX/21/
quelle