看来 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() 函数?