J'ai besoin de sélectionner des éléments sur la base de valeurs stockées dans l'élément .data()
objet. Au minimum, j'aimerais sélectionner des propriétés de données de premier niveau à l'aide de sélecteurs, par exemple de la manière suivante :
$('a').data("category","music");
$('a:data(category=music)');
Ou alors, le sélecteur se présenterait sous la forme d'un sélecteur d'attributs ordinaire :
$('a[category=music]');
Ou au format attribut, mais avec un spécificateur indiquant qu'il s'agit d'un format .data()
:
$('a[:category=music]');
J'ai trouvé Mise en œuvre de James Padolsey pour avoir l'air simple, mais bon. Les formats de sélecteurs ci-dessus reflètent les méthodes présentées sur cette page. Il y a aussi ceci Patch Sizzle .
Pour une raison ou une autre, je me souviens avoir lu il y a quelque temps que jQuery 1.4 inclurait la prise en charge des sélecteurs sur les valeurs dans l'interface jquery .data()
objet. Cependant, maintenant que je le cherche, je ne le trouve pas. Peut-être s'agissait-il d'une demande de fonctionnalité que j'ai vue. Y a-t-il un support pour cela et je ne le vois pas ?
Idéalement, j'aimerais prendre en charge les sous-propriétés dans data() en utilisant la notation par points. Comme ceci :
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
J'aimerais également prendre en charge plusieurs sélecteurs de données, de sorte que seuls les éléments correspondant à TOUS les sélecteurs de données spécifiés soient trouvés. Le sélecteur multiple habituel de jquery effectue une opération OU. Par exemple, $('a.big, a.small')
sélectionne a
avec l'une ou l'autre des classes big
o small
). Je cherche un ET, peut-être comme ceci :
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
Enfin, il serait bon que les opérateurs de comparaison et les fonctions regex soient disponibles sur les sélecteurs de données. Ainsi, les $(a[:artist.id>5000])
serait possible. Je me rends compte que je pourrais probablement faire une grande partie de ce travail en utilisant le système d'information de la Commission. filter()
mais il serait bon d'avoir un format de sélecteur simple.
Quelles sont les solutions disponibles pour y parvenir ? Jame's Padolsey's est-elle la meilleure solution à l'heure actuelle ? Mon inquiétude porte principalement sur les performances, mais aussi sur les fonctionnalités supplémentaires telles que la notation par points des sous-propriétés et les sélecteurs de données multiples. Existe-t-il d'autres implémentations qui prennent en charge ces éléments ou qui sont meilleures d'une manière ou d'une autre ?