J'essaie d'empêcher le navigateur d'utiliser l' :hover
effet du CSS, via JavaScript.
J'ai défini les styles a
et a:hover
dans mon CSS, car je veux un effet de survol, si JS n'est pas disponible. Mais si JS est disponible, je souhaite remplacer mon effet de survol CSS par un effet plus lisse (en utilisant le plugin de couleur jQuery par exemple.)
J'ai essayé ceci:
$("ul#mainFilter a").hover(
function(e){ e.preventDefault(); ...do my stuff... },
function(e){ e.preventDefault(); ...do my stuff... });
Je l'ai aussi essayé avec return false;
, mais cela ne fonctionne pas.
Voici un exemple de mon problème: http://jsfiddle.net/4rEzz/ . Le lien devrait simplement s'estomper sans devenir gris.
Comme mentionné par fudgey, une solution de contournement serait de réinitialiser les styles de survol en utilisant, .css()
mais je devrais écraser chaque propriété, spécifiée dans le CSS (voir ici: http://jsfiddle.net/raPeX/1/ ). Je recherche une solution générique.
Est-ce que quelqu'un sait comment faire ça?
PS: Je ne veux pas écraser tous les styles que j'ai définis pour le survol.
la source
<noscript>
solution aussi. Vous mettez simplement des<link>
balises dans votre<noscript>
, au lieu de<style>
balises. Ma solution vous permet de tout conserver dans un seul fichier de feuille de style plutôt que dans plusieurs fichiers.Utilisez une deuxième classe à laquelle seul le survol est attribué:
HTML
CSS
Vous pouvez maintenant utiliser Jquery pour supprimer la classe, par exemple si l'élément a été cliqué:
JQUERY
J'espère que cette réponse est utile.
la source
Vous pouvez manipuler les feuilles de style et les règles de feuille de style elles-mêmes avec javascript
Rendre les attributs! Importants et en faire la toute dernière définition CSS devrait remplacer toute définition précédente, à moins qu'elle ne soit plus spécifiquement ciblée. Vous devrez peut-être insérer plus de règles dans ce cas.
la source
<link>
balise de feuille de style noscript dans un<noscript>
élément? Cela fonctionnerait, non?Error: The operation is insecure.
Ceci est similaire à la réponse d'aSeptik, mais qu'en est-il de cette approche? Enveloppez le code CSS que vous souhaitez désactiver à l'aide de JavaScript dans des
<noscript>
balises. De cette façon, si javaScript est désactivé, le CSS:hover
sera utilisé, sinon l'effet JavaScript sera utilisé.Exemple:
la source
J'ai utilisé l'
not()
opérateur CSS et laaddClass()
fonction de jQuery . Voici un exemple, lorsque vous cliquez sur un élément de la liste, il ne survolera plus:Par exemple:
HTML
CSS
jQuery
la source
J'utiliserais CSS pour empêcher l'événement: hover de modifier l'apparence du lien.
Ce simple CSS signifie que les liens seront toujours noirs et non soulignés. Je ne peux pas dire à partir de la question si le changement d'apparence est la seule chose que vous voulez contrôler.
la source
Je recommanderais de remplacer toutes les
:hover
propriétés:active
lorsque vous détectez que l'appareil prend en charge le toucher. Appelez simplement cette fonction lorsque vous procédez ainsitouch()
.la source
Essayez simplement de définir la couleur du lien:
Edit: ou mieux encore, utilisez le CSS, comme Christopher l'a suggéré
la source
a
au lieu deul#mainFilter a
si c'est ce que vous voulez dire, ou dites-vous que chaque lien sur la page est d'une couleur différente?a.jsOverride:hover
cela remplace toutes les caractéristiques css, de sorte que les js devraient simplement ajouter cettejsOverride
classe à tous les liens lorsque la page se charge ...En fait, une autre façon de résoudre ce problème pourrait être d'écraser le CSS avec
insertRule
.Il donne la possibilité d'injecter des règles CSS dans une feuille de style existante / nouvelle. Dans mon exemple concret, cela ressemblerait à ceci:
Démo avec mon exemple original de 4 ans: http://jsfiddle.net/raPeX/21/
la source