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

时间:2013-05-02 12:38:56

标签: javascript jquery jquery-data

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

这是我正在使用的代码:

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

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

为什么会这样?

以下是我所谈论的例子:http://jsfiddle.net/f5Cpm/

感谢。

2 个答案:

答案 0 :(得分:7)

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

了解更多here

答案 1 :(得分:4)

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

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