Мне нужно выбрать элементы на основе значений, хранящихся в объекте .data()
. Как минимум, я хотел бы выбрать свойства данных верхнего уровня с помощью селекторов, возможно, вот так:
$('a').data("category","music");
$('a:data(category=music)');
Или, может быть, селектор будет в обычном формате селектора атрибутов:
$('a[category=music]');
Или в формате атрибута, но с указателем, чтобы указать, что он находится в .data()
:
$('a[:category=music]');
Я нашел реализацию Джеймса Падолси, чтобы выглядеть просто, но хорошо. Селектор форматирует выше методы зеркала, показанные на этой странице. Существует также Sizzle patch.
По какой-то причине я вспоминаю некоторое время назад, что 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
). Я ищу И, возможно, так:
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
Наконец, было бы замечательно, если бы в селекторах данных были доступны операторы сравнения и регулярные выражения. Таким образом, $(a[:artist.id>5000])
было бы возможно. Я понимаю, что, возможно, я мог бы сделать большую часть этого, используя filter()
, но было бы неплохо иметь простой формат селектора.
Какие решения доступны для этого? Является ли Jame Padolsey лучшим решением в это время? Моя озабоченность связана прежде всего с производительностью, но также и с дополнительными функциями, такими как точечное обозначение субсайта и несколько селекторов данных. Существуют ли другие реализации, которые поддерживают эти вещи или чем-то лучше?