正确使用jQuery .data

时间:2011-06-08 21:51:16

标签: jquery jquery-selectors

我需要将一个字母数字字符串附加到一组节点;每个节点都有一个字符串(不是唯一的)。

然后我需要一个按字符串值过滤的点击处理程序。我看到jQuery的.data()函数会将字符串存储在节点上,但是我无法选择它们。我应该使用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 个答案:

答案 0 :(得分:2)

jQuery属性选择器仅适用于真正的属性 - 即在原始HTML中定义的内容或由setAttribute定义的内容(由jQuery的attr使用)。这是设计并且是正确的行为。

如果您想使用data,则必须使用filter手动进行过滤:

$('.node').filter(function() {
    return $.data(this, 'string') === "18nn4v";
}).