更改数据属性不起作用

我正在尝试更改数据属性,但它似乎永远不会被更改并保持为“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(); 用于更改属性(如果在键 – 值对中使用)。

文档在这里