更改数据属性不起作用

Dav*_*idB 10 jquery

我正在尝试更改数据属性,但它似乎永远不会被更改并保持为"TEXT",这是默认值.

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

    $(el).data('original-title', str);
    Utilities.ApplyTooltips($(el));
}
Run Code Online (Sandbox Code Playgroud)

请帮忙

Bla*_*ger 36

.data方法不会改变data-HTML属性; 它改变了jQuery内部存储的变量.

如果您确实需要/想要更改data-属性,请使用以下.attr()方法明确地执行此操作:

$(el).attr('data-original-title', str); 
Run Code Online (Sandbox Code Playgroud)

但是,这不会改变返回的值.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>
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

现在,在实践中,您不必担心这一点.请记住,该data-属性代表变量的初始值,.data()而不一定是该变量的当前值,你会没事的.

总结:.data()方法检索从HTML元素的值一旦文档被加载时,并不会作为变量存储在内部,以便再次只要做.