Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La pseudo-classe :has() permet de cibler un élément si au moins un des sélecteurs passés en paramètre correspond à l'élément (selon la portée, :scope, de l'élément).

Cette pseudo-classe :has() prend en paramètre une liste de sélecteurs.

Note : Pour des raisons de performances et dans la spécification actuelle, has() n'est pas classé comme un sélecteur dynamique et peut uniquement être utilisé de façon statique (par exemple avec des fonctions comme document.querySelector().

/* Avec cette ligne de JavaScript, on récupère  */
/* tous les éléments <a> qui ont un fils direct */
/* qui est un élément <img> */
/* Attention, actuellement cette fonction n'est */
/* pas prise en charge par les navigateurs et   */
/* n'est pas conçue pour fonctionner dans les   */
/* feuilles de style */
var test = document.querySelector('a:has(> img)');

Syntaxe

:has(liste_selecteurs) { proprietes }

Exemples

Dans l'exemple suivant, le sélecteur permet de cibler uniquement les éléments <a> qui contiennent un fils direct <img> :

a:has(> img)

Le sélecteur qui suit correspond aux éléments <h1> qui précèdent directement un élément <p> :

h1:has(+ p)

Spécifications

Spécification État Commentaires
Selectors Level 4
La définition de ':has()' dans cette spécification.
Version de travail Définition initiale

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung Internet
Support simple
Expérimentale
Chrome Aucun support NonEdge Aucun support NonFirefox Aucun support Non
Notes
Aucun support Non
Notes
Notes See bug 418039
IE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Aucun support NonChrome Android Aucun support NonEdge Mobile Aucun support NonFirefox Android Aucun support Non
Notes
Aucun support Non
Notes
Notes See bug 418039
Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Non

Légende

Aucun support  
Aucun support
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Voir les notes d'implémentation.
Voir les notes d'implémentation.

Étiquettes et contributeurs liés au document

Contributeurs à cette page : lp177, SphinxKnight, aduh95
Dernière mise à jour par : lp177,