Déclenchement de CSS: sélecteur actif pour éléments non ancrés

Comment déclencher: l'état actif pour les éléments non ancrés via JavaScript (jQuery)?


Tout en examinant la section 5.11.3 de la spécification W3C CSS2 en référence à: pseudo sélecteur flottant pour voir sur le déclenchement de l'activation de un, je suis tombé sur ce qui m'a amené à croire qu'il devrait être possible:

"La: pseudo-classe active s'applique alors qu'un élément est activé par l'utilisateur. Par exemple, entre les heures où l'utilisateur appuie sur le bouton de la souris et le libère."

"CSS ne définit pas quels éléments peuvent être dans les états ci-dessus, ou comment les états sont entrés et laissés. Les scripts peuvent changer si les éléments réagissent aux événements utilisateur ou pas, et différents périphériques et UA peuvent avoir différentes façons de pointer ou d'activer éléments."

Merci de votre aide!

Vous ne pouvez pas déclencher un pseudo-sélecteur css comme :active avec javascript. Il n'y a pas de fonction / gestionnaire qui pourrait être exécutée, donc même si vous trigger un click sur un élément qui a un css :active ensemble pseudo-sélecteur css :active (réglage de la couleur d'arrière-plan sur rouge par exemple), rien ne se produira.

J'ai rencontré cette question tout en recherchant exactement la même chose.

En gros, j'ai une zone de texte et un bouton. Button.click est déclenché lorsque l'utilisateur appuie sur Entrée. Cependant, le: sélecteur actif dans css n'est pas déclenché afin qu'il ne donne pas le même effet.

C'est donc ce que j'ai fait. C'est un peu redondant mais fonctionne.

Dans le css

 /*this is for actual clicks on the button */ .Button:active { position:relative; top:5px; } /* this is for pressing enter instead of clicking the button */ .Button.activate{ position:relative; top:5px; } 

Alors jquery

 //if enter is pressed, trigger button click $("#textArea").keydown(function(event){ if(event.keyCode == 13){ $("#button").click(); $("#button").addClass('activate'); } }); //if enter is released, remove class $("#textArea").keyup(function(event){ if(event.keyCode == 13){ $("#button").removeClass('activate'); } });