Мені потрібно вибрати елементи на основі значень, що зберігаються в .data()
об'єкті елемента . Як мінімум, я б хотів вибрати властивості даних верхнього рівня за допомогою селекторів, можливо так:
$('a').data("category","music");
$('a:data(category=music)');
Або, можливо, селектор буде у форматі звичайного атрибута:
$('a[category=music]');
Або у форматі атрибутів, але зі специфікатором, щоб вказати, він знаходиться у .data()
:
$('a[:category=music]');
Я вважав, що реалізація Джеймса Падолсі виглядає просто, але добре. Селектор формати вище дзеркальних методів, показаних на цій сторінці. Також є цей патч Sizzle .
З якоїсь причини я пригадую, що читав назад, що jQuery 1.4 включає підтримку селекторів значень .data()
об'єкта jquery . Однак тепер, коли я його шукаю, я не можу його знайти. Можливо, це був просто запит на функцію, який я бачив. Чи є підтримка в цьому, і я просто не бачу цього?
В ідеалі я хотів би підтримувати підвластивості в даних (), використовуючи крапкові позначення. Подобається це:
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
Я також хотів би підтримати декілька селекторів даних, де знаходяться лише елементи із ВСІМ вказаними селекторами даних. Звичайний множинний селектор jquery робить операцію АБО. Наприклад, $('a.big, a.small')
вибирає a
теги з класом big
або small
). Я шукаю І, можливо, так:
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
Нарешті, було б чудово, якби оператори порівняння та функції регулярного вибору були доступними на селекторах даних. Так $(a[:artist.id>5000])
було б можливо. Я розумію, що, напевно, я міг би зробити багато з цього, використовуючи filter()
, але було б непогано мати простий формат вибору.
Які рішення доступні для цього? Чи є Падольсей Джейма найкращим рішенням на даний момент? Я хвилююсь насамперед щодо продуктивності, а також у додаткових функціях, таких як точкове позначення підменю та множинні селектори даних. Чи є інші реалізації, які підтримують ці речі або є в чомусь кращими?