我正在尝试更改数据属性,但它似乎永远不会被更改并保持为“TEXT”,这是默认值。
function SuccessGetActorsForGroupCallback(data, el) {
var str = "";
jQuery.each(data, function (i, val) {
str += val + '<br />';
});
$(el).data('original-title', str);
Utilities.ApplyTooltips($(el));
}
请帮忙
答案 0 :(得分:36)
.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元素 一次 中检索一个值,并且只要变量存储在内部,就不要再这样做了。
答案 1 :(得分:2)
您的代码:$(el).data('original-title', str);
应该是:$(el).attr('data-original-title', str);
.attr();
用于更改属性。