Bir öğenin .data()
nesnesinde depolanan değerlere dayalı öğeleri seçmek gerekir . En azından, belki de bunun gibi seçicileri kullanarak en üst düzey veri özelliklerini seçmek istiyorum:
$('a').data("category","music");
$('a:data(category=music)');
Veya belki de seçici normal nitelik seçici formatında olacaktır:
$('a[category=music]');
Veya özellik biçiminde, ancak içinde olduğunu belirtmek için bir belirteçle .data()
:
$('a[:category=music]');
James Padolsey'in uygulamasını basit ama iyi görünmek için buldum . Seçici biçimleri, o sayfada gösterilen yansıtma yöntemlerinin üstündedir. Ayrıca bu Sizzle yaması var .
Nedense, jQuery 1.4 jquery .data()
nesnesindeki değerleri seçiciler için destek içereceğini bir süre geri hatırlıyorum . Ancak, şimdi aradığım için bulamıyorum. Belki de sadece gördüğüm bir özellik isteğiydi. Bunun için bir destek var mı ve sadece görmüyorum?
İdeal olarak, nokta gösterimini kullanarak veri () alt özelliklerini desteklemek istiyorum. Bunun gibi:
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
Ayrıca, yalnızca TÜM belirtilen veri seçicilere sahip öğelerin bulunduğu birden fazla veri seçiciyi desteklemek istiyorum. Normal jquery çoklu seçici OR işlemi yapar. Örneğin, sınıf veya ) içeren etiketleri $('a.big, a.small')
seçer . Bir AND arıyorum, belki de böyle:a
big
small
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
Son olarak, veri seçicilerinde karşılaştırma işleçlerinin ve normal ifade özelliklerinin bulunması harika olurdu. Bu $(a[:artist.id>5000])
mümkün olur. Muhtemelen bunu kullanarak yapabileceğimin farkındayım filter()
, ama basit bir seçici formata sahip olmak güzel olurdu.
Bunu yapmak için hangi çözümler var? Jame's Padolsey şu anda en iyi çözüm mü? Benim endişem öncelikle performans açısından değil, aynı zamanda alt özellik nokta gösterimi ve çoklu veri seçiciler gibi ekstra özellikler. Bunları destekleyen ya da bir şekilde daha iyi olan başka uygulamalar var mı?