Мне нужно выбрать элементы на основе значений, хранящихся в .data()
объекте элемента . Как минимум, я хотел бы выбрать свойства данных верхнего уровня с помощью селекторов, возможно, так:
$('a').data("category","music");
$('a:data(category=music)');
Или, возможно, селектор будет в обычном формате селектора атрибутов:
$('a[category=music]');
Или в формате атрибута, но с указателем, указывающим, что он находится в .data()
:
$('a[:category=music]');
Я обнаружил, что реализация Джеймса Падолси выглядит просто, но хорошо. Селекторные форматы выше методов зеркала показаны на этой странице. Есть также этот патч Sizzle .
По какой-то причине я вспоминаю, как читал некоторое время назад, что jQuery 1.4 будет включать поддержку селекторов для значений в jquery. .data()
объекте . Однако теперь, когда я ищу это, я не могу найти это. Может быть, это был просто запрос функции, который я видел. Есть ли поддержка для этого, и я просто не вижу этого?
В идеале, я хотел бы поддерживать под-свойства в data () с использованием точечной нотации. Как это:
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
Я также хотел бы поддерживать несколько селекторов данных, где находятся только элементы со ВСЕМИ указанными селекторами данных. Обычный множественный селектор jquery выполняет операцию ИЛИ. Например, $('a.big, a.small')
выбирает a
теги с классом big
или small
). Я ищу AND, возможно, вот так:
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
Наконец, было бы здорово, если бы на селекторах данных были доступны операторы сравнения и функции регулярных выражений. Так $(a[:artist.id>5000])
было бы возможно. Я понимаю, что, вероятно, смогу сделать многое из этого, используяfilter()
, но было бы неплохо иметь простой формат селектора.
Какие решения доступны для этого? Является ли Jame's Padolsey лучшим решением на данный момент? В первую очередь меня беспокоит производительность, а также дополнительные функции, такие как точечная нотация под-свойства и несколько селекторов данных. Существуют ли другие реализации, которые поддерживают эти вещи или лучше в некотором роде?