鉴于下面的代码,我希望foo和bar都有一个带有适当数据属性的div,但只有使用attr的那个有效。我错过了什么吗?这可能吗?有人可以解释/为什么/这会按照它的方式工作?我试着查看每种方法的api文档,但没有看到任何暗示它不应该工作的东西。
<div id="foo">asdd</div>
<div id="bar">asdasd</div>
$("#foo").append($('<div>').attr("data-something", "a value"));
$("#bar").append($('<div>').data("something", "a second value"));
答案 0 :(得分:3)
jQuery不会在DOM上存储data
,它使用内部地图
答案 1 :(得分:3)
你可以这样做,但是你期望.data()
发生的事情并不是这种方法的工作方式。 .data()
方法将从<{1}}属性中读取值,但它不会创建或修改此类属性。
您链接的API文档:
数据属性在第一次访问数据属性时被拉出,然后不再被访问或变异(所有数据值都在内部存储在jQuery中)。
在您自己的小提琴中,您应该能够从调试控制台向您自己证明您创建的第二个data-foo
确实存储了该数据。
答案 2 :(得分:0)
如果您对提供数据并将其与DOM元素配对感兴趣,您可能需要考虑使用D3:http://d3js.org