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