Wygląda na to, że jQuery 1.7.2 nie aktualizuje atrybutów danych DOM dla mnie. Biorąc pod uwagę następujące znaczniki:
<ul id="foo">
<li data-my-key="12345">ABCDEF</li>
</ul>
Uruchamiając JavaScript poniżej, otrzymuję wyniki, których się nie spodziewam:
$('#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
Po dalszych badaniach zauważyłem, że DOM ma nie zmodyfikowano po ustawieniu nowej wartości za pomocą funkcji .data () (zweryfikowanej przy pomocy "Inspect Element" w Chrome 21.0.1180.81, Firebug 1.10.3 i Firefox 14.0.1).
Zachowanie jest nieoczekiwane z mojej perspektywy, ale czy jest to zamierzony sposób na działanie danych jQuery? Jeśli tak, jaki jest właściwy sposób aktualizowania atrybutów danych * za pomocą jQuery? Po prostu użyj funkcji attr ()?