我尝试使用data-attr和jQuery进行一项非常简单的任务,请查看此示例:
标记:
<div data-name="Testing"></div>
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 docs:
数据属性第一次被拉入数据属性 访问,然后不再访问或变异(所有数据值 然后在内部存储在jQuery中。
更多信息:jQuery Data vs Attr?
答案 0 :(得分:2)
您正在更改属性,但这不会自动更新数据。这有效:
$(function(){
var div = $('div');
div.append(div.data('name'));
div.data('name', ' - Testing 2');
div.append(div.data('name'));
});
答案 1 :(得分:1)
工作演示 http://jsfiddle.net/DDv8U/
$(div).data('name', ' - Testing 2');
休息符合需要:)
<强>码强>
$(function(){
var div = $('div');
$(div).append($(div).data('name'));
$(div).data('name', ' - Testing 2');
$(div).append($(div).data('name'));
});