Muszę wybierać elementy na podstawie wartości przechowywanych w .data()
obiekcie elementu . Przynajmniej chciałbym wybrać właściwości danych najwyższego poziomu za pomocą selektorów, być może tak:
$('a').data("category","music");
$('a:data(category=music)');
A może selektor miałby zwykły format selektora atrybutów:
$('a[category=music]');
Lub w formacie atrybutu, ale ze specyfikatorem wskazującym, że jest w .data()
:
$('a[:category=music]');
Znalazłem realizację Jamesa Padolsey za patrzeć proste, ale dobra. Formaty selektora powyżej metod dublowania pokazane na tej stronie. Jest też ta łatka Sizzle .
Z jakiegoś powodu przypominam sobie, że jakiś czas temu jQuery 1.4 zawierałoby obsługę selektorów wartości w .data()
obiekcie jquery . Jednak teraz, gdy go szukam, nie mogę go znaleźć. Może widziałem tylko prośbę o dodanie funkcji. Czy jest na to wsparcie i po prostu tego nie widzę?
Idealnie, chciałbym wesprzeć właściwości podrzędne w data () za pomocą notacji kropkowej. Lubię to:
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
Chciałbym również obsługiwać wiele selektorów danych, w których znajdują się tylko elementy ze WSZYSTKIM określonymi selektorami danych. Zwykły wielokrotny selektor jquery wykonuje operację LUB. Na przykład $('a.big, a.small')
wybiera a
tagi z klasą big
lub small
). Szukam AND, być może takiego:
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
Wreszcie byłoby wspaniale, gdyby operatory porównania i funkcje wyrażenia regularnego były dostępne w selektorach danych. Tak $(a[:artist.id>5000])
byłoby możliwe. Zdaję sobie sprawę, że prawdopodobnie mógłbym wiele z tego zrobić filter()
, ale byłoby miło mieć prosty format selektora.
Jakie rozwiązania są dostępne, aby to zrobić? Czy Jame's Padolsey jest obecnie najlepszym rozwiązaniem? Moje obawy dotyczą przede wszystkim wydajności, ale także dodatkowych funkcji, takich jak notacja kropkowa pod-właściwości i wiele selektorów danych. Czy istnieją inne implementacje, które wspierają te rzeczy lub są w jakiś sposób lepsze?