10

我正在尝试更改数据属性,但它似乎永远不会被更改并保持为“TEXT”,这是默认设置。

function SuccessGetActorsForGroupCallback(data, el) {
    var str = "";
    jQuery.each(data, function (i, val) {
        str += val + '<br />';
    });

    $(el).data('original-title', str);
    Utilities.ApplyTooltips($(el));
}

请帮忙

4

2 回答 2

38

.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 元素中检索一个值,只要变量在内部存储,就不会再次这样做。

于 2013-10-22T14:17:27.767 回答
2

您的代码:$(el).data('original-title', str);
应该是:$(el).attr('data-original-title', str);

.attr();如果在键值对中使用,则用于更改属性。

文档在这里

于 2013-10-22T14:16:51.233 回答