我有一个问题。我改变了属性
$(selector).find('img[data-photoid="' + phid + '"]').attr({"data-value1":"somevalue1", "data-value2":"somevalue2"});
我在浏览器的DOM中看到jQuery改变了值。但是当我点击img jQuery使用旧值时。
$(document).on('click','img',function(e){
e.preventDefault();
var t=$(this);
var value1=t.data("value1"); //jQuery uses old values
var value2=t.data("value2"); //although I changed values
});
如何使用新值?
答案 0 :(得分:1)
坚持一种工作方式,而不是混合attr
和data
方法。 data
方法仅在第一次引用时获取属性值,然后在此之后生活。引自jQuery documentation:
从jQuery 1.4.3开始,HTML 5数据属性将自动引入jQuery的数据对象。 [...]数据属性在第一次访问数据属性时被拉出,然后不再被访问或变异(然后所有数据值都内部存储在jQuery中)。
我建议您更改当前使用attr
的代码:
$(selector).find('img[data-photoid="' + phid + '"]')
.data("value1", "somevalue1")
.data("value2", "somevalue2");
您不会看到HTML中的更改,但会更有效地运行。