【发布时间】:2012-09-01 12:06:11
【问题描述】:
似乎 jQuery 1.7.2 没有为我更新 DOM 数据属性。给定以下标记:
<ul id="foo">
<li data-my-key="12345">ABCDEF</li>
</ul>
运行下面的 JavaScript,我得到了一些我不期望的结果:
$('#foo li:first').data('my-key') // Returns 12345 - Expected
$('#foo li[data-my-key="12345"]') // Returns the expected <li>
$('#foo li:first').data('my-key', '54321')
$('#foo li:first').data('my-key') // Returns 54321 - Expected
$('#foo li[data-my-key="54321"]') // Returns an empty array - Not expected
经过进一步调查,我注意到在使用 .data() 函数设置新值后,DOM 未被修改(通过 Chrome 21.0.1180.81、Firebug 1.10 中的“检查元素”验证)。 3 和 Firefox 14.0.1)。
这种行为出乎我的意料,但这是 jQuery 数据发挥作用的预期方式吗?如果是这样,用 jQuery 更新 data-* 属性的适当方法是什么?只需使用 attr() 函数?
【问题讨论】:
-
@JosephSilber ehhh 我真的不喜欢你的回答......
-
@Neal - 嗯……好的。为什么?
-
@JosephSilber ehhhh idk。看起来并不完全符合犹太教规。也许我们的两个答案的混合可能会更好。
标签: jquery