jQuery不返回新的data-attribute

我正在尝试使用data-attr和jQuery的一个非常简单的任务,请查看此示例:

加价

JS

 $(function(){ var div = $('div'); $(div).append($(div).data('name')); $(div).attr('data-name', ' - Testing 2'); $(div).append($(div).data('name')); console.log(div); }); 

你可以在这里测试一下: http : //jsfiddle.net/YsKJJ/16/

因此,它应该在div添加文本Testing - Testing 2 ,但是打印TestingTesting 。 在控制台中我检查了对象中是否更改了attr,是的,有新值- Testing 2但是jQuery仍然返回原始值:(

任何的想法?

更新:

那么,这个行为的原因是根据jQuery文档:

数据属性在第一次访问数据属性时被拉出,然后不再被访问或变异(然后所有数据值都在内部存储在jQuery中)。

更多信息: jQuery Data vs Attr?

工作演示 http://jsfiddle.net/DDv8U/

  • API: http : //api.jquery.com/data/ – 尝试使用此$(div).data('name', ' - Testing 2');

rest应该适合需要:)

 $(function(){ var div = $('div'); $(div).append($(div).data('name')); $(div).data('name', ' - Testing 2'); $(div).append($(div).data('name')); }); 

您正在更改属性,但这不会自动更新数据。 这有效:

 $(function(){ var div = $('div'); div.append(div.data('name')); div.data('name', ' - Testing 2'); div.append(div.data('name')); });