5

我正在更改元素的data-demo属性,div当我想在另一个事件中检查它时,它总是向我显示它的初始值而不是当前值。

这是我正在使用的代码:

$('#showValue').click(function(){
    alert($('.value').data('demo'));
});

$('.update').click(function(){
   $('.value').text('updated').attr('data-demo', 'updated');
});

为什么会这样?

这是我正在谈论的示例的小提琴:http: //jsfiddle.net/f5Cpm/

谢谢。

4

2 回答 2

9

内部数据首次初始化后,它永远不会返回属性来获取或设置值,因此如果您已经在该元素上使用了 .data ,则更新属性不会更新 .data() 中存储的内容。

在这里阅读更多

于 2013-05-02T12:41:59.630 回答
6

jQuery.data()函数并不真正支持 HTML5 数据集功能,而是将所有 html5 数据集数据加载到它们自己的数据集合中。因此,通过更改属性对数据集的更新不会反映在 jQuery 内部数据集合中。

换句话说,您要么因此需要使用dataset.demo$().data("demo")要么$().attr("data-demo")。第二个的优点是,如果您在应用程序的其余部分使用 jquery,它当然可以跨浏览器和 jQuery 的一部分。

于 2013-05-02T12:43:11.507 回答