Правильное использование jQuery .data - PullRequest
1 голос
/ 09 июня 2011

Мне нужно присоединить буквенно-цифровую строку к набору узлов;каждый узел имеет строку (которая не является уникальной).

Тогда мне нужен обработчик кликов, который фильтрует по значению этой строки.Я вижу, что функция .data () в jQuery будет хранить строки на узлах, но тогда я не могу выбрать их.Должен ли я создавать узлы, используя свойство attr, например:

var node = $('<div class="node"></div>').attr('data-string', "18nn4v");

, а затем фильтровать, как это?

$('#something').click(function() {
    $('.node[data-string="18nn4v"]')...//whatever
});

Было бы неплохо, если бы я мог просто использовать .data().Это кажется немного односторонним, поскольку jQuery автоматически импортирует все атрибуты "data-XXX" в свойство этого элемента: .data(XXX), но не экспортирует все свойства .data(XXX) в атрибуты "data-XXX"!

1 Ответ

2 голосов
/ 09 июня 2011

Селектор атрибутов jQuery работает только с подлинными атрибутами, то есть с тем, что было определено в исходном HTML или с помощью setAttribute (используется в jQuery attr). Это по замыслу и правильное поведение.

Если вы хотите использовать data, вам придется выполнить фильтрацию вручную с помощью filter:

$('.node').filter(function() {
    return $.data(this, 'string') === "18nn4v";
}).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...