使用jQuery data方法设置一些数据,然后以后查询它是否可能?例如...查找所有具有数据foo == true的元素?
使用jQuery data方法设置一些数据,然后以后查询它是否可能?例如...查找所有具有数据foo == true的元素?
你可以使用.filter()
来选择你想要的元素,像这样:
$("someSelector").filter(function() { return $.data(this, "foo"); });
在这种情况下,因为你正在检查一个布尔值,所以非常简单。如果要检查某个值,请添加比较运算符,就像这样:$("someSelector").filter(function() { return $.data(this, "foo") == "value"; });
仅使用data
API 无法实现,需要通过遍历DOM中的每个元素并检查其是否包含特定值的数据项。
如果数据很简单,可能可以使用HTML5数据属性,这些属性还可以通过选择器进行搜索。
$("selector").attr("data-key", "theKey");
稍后使用以下代码选择所有具有名为"data-key"
且值为true
的属性的对象:
$('[data-key="true"]')
$.data(this, 'foo')
相对于$(this).data('foo')
有什么优势? - Matt Ball$.data(this, "foo") == "value"
,我将其替换为$.data(this).foo.id == "idValue"
后它就可以用了。无论如何,谢谢你的提示!确实帮了我很大的忙! - Xeroxoidfoo
上的id
属性,而不仅仅是foo
。为了进行比较,在我的例子中,你需要使用$.data(this, "foo").id
而不仅仅是$.data(this, "foo")
来进行等价比较。 - Nick Craver$(this).data('foo')
可以正常工作。奇怪的是,在"select"元素上,当选择的值改变时它开始起作用。 - arnaslu.data('name')
访问(至少第一次),该方法会查看属性,而$.data(obj,'name')
仅直接查看jQuery中存储的数据对象。 - Nick Craver