J'ai besoin de sélectionner des éléments en fonction des valeurs stockées dans l' .data()
objet d' un élément . Au minimum, j'aimerais sélectionner les propriétés de données de niveau supérieur à l'aide de sélecteurs, peut-être comme ceci:
$('a').data("category","music");
$('a:data(category=music)');
Ou peut-être que le sélecteur serait au format de sélecteur d'attribut normal:
$('a[category=music]');
Ou au format d'attribut, mais avec un spécificateur pour indiquer qu'il est dans .data()
:
$('a[:category=music]');
J'ai trouvé la mise en œuvre de James Padolsey simple, mais bonne. Les formats de sélecteur ci-dessus reflètent les méthodes affichées sur cette page. Il y a aussi ce patch Sizzle .
Pour une raison quelconque, 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 de l' .data()
objet jquery . Cependant, maintenant que je le cherche, je ne le trouve pas. C'était peut-être juste une demande de fonctionnalité que j'ai vue. Y a-t-il un soutien pour cela et je ne le vois tout simplement pas?
Idéalement, j'aimerais prendre en charge les sous-propriétés dans data () en utilisant la notation par points. Comme ça:
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
Je voudrais également prendre en charge plusieurs sélecteurs de données, où seuls les éléments avec TOUS les sélecteurs de données spécifiés sont trouvés. Le sélecteur multiple jquery régulier effectue une opération OR. Par exemple, $('a.big, a.small')
sélectionne les a
balises avec la classe big
ou small
). Je recherche un ET, peut-être comme ceci:
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
Enfin, ce serait formidable si les opérateurs de comparaison et les fonctionnalités regex étaient disponibles sur les sélecteurs de données. Ce $(a[:artist.id>5000])
serait donc possible. Je me rends compte que je pourrais probablement faire une grande partie de cela en utilisant filter()
, mais ce serait bien d'avoir un format de sélecteur simple.
Quelles solutions sont disponibles pour ce faire? Est-ce que Jame's Padolsey est la meilleure solution en ce moment? Ma préoccupation concerne principalement les performances, mais aussi les fonctionnalités supplémentaires telles que la notation par points de sous-propriété et les sélecteurs de données multiples. Y a-t-il d'autres implémentations qui prennent en charge ces choses ou qui sont meilleures d'une certaine manière?