如何使用新的属性值?

时间:2017-05-04 17:45:51

标签: jquery

我有一个问题。我改变了属性

$(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
});

如何使用新值?

1 个答案:

答案 0 :(得分:1)

坚持一种工作方式,而不是混合attrdata方法。 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中的更改,但会更有效地运行。