我正在尝试更改数据属性,但它似乎从未更改,并且保持为“TEXT”,这是默认值。
function SuccessGetActorsForGroupCallback(data, el) {
var str = "";
jQuery.each(data, function (i, val) {
str += val + '<br />';
});
$(el).data('original-title', str);
Utilities.ApplyTooltips($(el));
}
请帮忙
请您参考如下方法:
.data
方法不会改变 data-
HTML 属性;它改变了 jQuery 内部存储的变量。
如果您确实需要/想要更改 data-
属性,请使用 .attr()
方法明确执行此操作:
$(el).attr('data-original-title', str);
但是,这不会改变 .data
返回的值。仅当 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 元素中检索一个值一次文档已加载,并且只要变量在内部存储,就不会再次加载。