该.data
方法不会改变data-
HTML 属性;它改变了 jQuery 内部存储的变量。
如果您确实需要/想要更改data-
属性,请使用以下.attr()
方法显式执行此操作:
$(el).attr('data-original-title', str);
但是,这不会改变.data
. 仅当jQuery无法找到内部存储的值时,jQuery 才会从data-
HTML 属性如果您在更改 HTML 属性后再次检索,您会发现它没有更改。$(el).data('original-title')
如果这是一个问题,请使用该.removeData()
方法删除内部存储的值。下次使用 时.data()
,jQuery 会发现它丢失并检索data-
HTML 属性。
看看:http: //jsfiddle.net/mblase75/LHCUK/
HTML:
<p id="p" data-title="blah"></p>
jQuery:
console.log($('#p').data('title')); // returns "blah"
// alter the attribute directly
$('#p').attr('data-title','whooo'); // data-title="whooo"
// test if .data is changed
console.log($('#p').data('title')); // still returns "blah"
// delete the .data() value
$('#p').removeData('title');
// now fetch it again -- it will retrieve the new data- attribute
console.log($('#p').data('title')); // returns "whooo"
现在,在实践中,您不必担心这一点。请记住,该data-
属性表示变量的初始值,.data()
而不一定是该变量的当前值,你会没事的。
总结:该方法在加载文档时.data()
从 HTML 元素中检索一个值,只要变量在内部存储,就不会再次这样做。