Skip to main content
 首页 » 编程设计

jquery之更改数据属性不起作用

2024年02月05日16dyllove98

我正在尝试更改数据属性,但它似乎从未更改,并且保持为“TEXT”,这是默认值。

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

请帮忙

请您参考如下方法:

.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 元素中检索一个值一次文档已加载,并且只要变量在内部存储,就不会再次加载。