要素の.data()
オブジェクトに格納されている値に基づいて要素を選択する必要があります。少なくとも、次のように、セレクターを使用して最上位のデータプロパティを選択したいと思います。
$('a').data("category","music");
$('a:data(category=music)');
または、セレクターは通常の属性セレクター形式になります。
$('a[category=music]');
または属性形式ですが、次の場所にあることを示す指定子があります.data()
。
$('a[:category=music]');
James Padolseyの実装はシンプルでありながら見栄えが良いことがわかりました。セレクタは、そのページに示されているミラーメソッドの上でフォーマットします。このシズルパッチもあります。
何らかの理由で、jQuery 1.4にはjquery .data()
オブジェクトの値のセレクターのサポートが含まれることをしばらく読んだことを思い出しました。しかし、今探しているので見つけられません。多分それは私が見た機能要求だけだった。これに対するサポートはありますか?私はそれを見ていませんか?
理想的には、ドット表記を使用してdata()のサブプロパティをサポートしたいと思います。このような:
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
また、指定されたすべてのデータセレクターを持つ要素のみが検出される複数のデータセレクターもサポートしたいと考えています。通常のjquery複数セレクターはOR演算を行います。たとえば、クラスまたは)のいずれかのタグを$('a.big, a.small')
選択しa
ます。私はANDを探しています、おそらくこのように:big
small
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
最後に、比較演算子と正規表現機能がデータセレクターで利用できると便利です。だから$(a[:artist.id>5000])
可能でしょう。私はおそらくこれを使って多くのことを行うことができると思いますfilter()
が、単純なセレクターフォーマットがあればいいでしょう。
これを行うにはどのようなソリューションがありますか?現時点で、ジェームズパドルシーは最高のソリューションですか?私の懸念は主にパフォーマンスに関するものですが、サブプロパティのドット表記や複数のデータセレクターなどの追加機能にも関係しています。これらのものをサポートする、または何らかの点で優れている実装は他にありますか?