11480 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

j'ai une appli web qui utilise JQuery 1.6.2 (si si !). Je suis en train de migrer tout ça vers une version plus récente (3.2.1), mais j'ai un problème qui m'embête.

Soit le sélecteur suivant :
$("*:[Validators]")


Son but est de me retourner tous les éléments du DOM qui ont la propriété JS "Validators". En version 3.2.1, ça me retourne l'erreur (alors que ça fonctionne bien en 1.6.2) :
Syntax error, unrecognized expression: *:[Validators]

Une idée pour contourner ce problème ?

Merci !
Modérateur
bonjour,

Validators c'est un attribut bricolé?

Normalement pour utiliser des attributs custom, ils doivent commencer par "data-"

Néanmoins le problème est que le sélecteur n'a aucun sens. Ce qui est étonnant c'est que ça fonctionne avec la 1.6.2.

Le bon sélecteur serait:

[Validators]

Voir ceci, ce qui revient au même:
*[Validators]
C'est pas un attribut de l'élément. C'est une propriété de l'objet qui est retourné par le selecteur Jquery (voir image).

upload/1499148247-66425-capture.png
Modérateur
Mais jQuery ne permet pas d'écrire des sélecteurs qui vont explorer les propriétés du DOM (ni en 1.6). Car CSS en est incapable.

Le sélecteur que tu as écrit ne peut fonctionner qu'avec un attribut (et encore en 1.6 seulement car le sélecteur est invalide).
Et pourtant ça fonctionne...

Bon, derrière, c'est de l'ASP.NET WebForms... L'élément que je donne comme exemple est représenté comme ça dans le DOM :
upload/1499160601-66425-capture.png

Pour contourner ce problème, je pensais essayer d'affecter une classe spécifique aux éléments dont l'objet JS a cette propriété "Validators". Tu verrais une autre piste ?
Bonjour,

Eh bien une classe ou justement un attribut valide, du type data-* (e.g. data-validators)

Comme kustolovic, je n'aurais pas parié que jQuery (d'autant plus un ancien) pouvait aller chercher une propriété comme celle-là sur un élément du DOM. Smiley smile
Finalement, j'ai pris une tout autre option. Mon problème était lié au framework ASP.NET WebForms de Microsoft. J'ai trouvé un moyen de contourner mon problème sans avoir besoin d'utiliser JQuery.

Merci pour vos réponses !