使用jQuery未检测到数据属性更改

Alv*_*aro 3 javascript jquery jquery-data

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

这是我正在使用的代码:

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

$('.update').click(function(){
   $('.value').text('updated').attr('data-demo', 'updated');
});
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

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

谢谢.

小智 7

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

在这里阅读更多


Dav*_*der 6

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

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