This question already has answers here:
jQuery Data vs Attr?
(3个答案)
Get data-attribute jquery vs javascript
(1个答案)
5年前关闭。
我有一个链接,该链接根据页面上的活动动态更改一些参数。替换值的功能似乎运行良好,我可以在chrome开发人员工具的“元素”窗口中看到它正在更新。但是,当我尝试从另一个JS函数读取该值时,它就是因为它根本没有被更改。
我做了一个非常简化的例子:
在这里尝试:http://jsfiddle.net/2hj3e/
首先单击“检查数据操作值”,您将看到数据操作参数。然后,单击“设置新值”(您会在开发人员工具中看到它已更改),然后再次单击“检查数据操作值”。我希望它能打印123,但它仍会打印“ data / 1 / pageid / 0 /”。
任何人都可以帮助我理解这一点,并指导我如何解决此问题。
(3个答案)
Get data-attribute jquery vs javascript
(1个答案)
5年前关闭。
我有一个链接,该链接根据页面上的活动动态更改一些参数。替换值的功能似乎运行良好,我可以在chrome开发人员工具的“元素”窗口中看到它正在更新。但是,当我尝试从另一个JS函数读取该值时,它就是因为它根本没有被更改。
我做了一个非常简化的例子:
<a href="#" id="a-delete-page" data-action="data/1/pageid/0/">
check data-action value</a>
<a href="#" id="toggle">set new value</a>
<script>
$('#a-delete-page').click(test);
$('#toggle').click(toggleValue);
function toggleValue(){
var newValue = '123';
$("#a-delete-page").attr('data-action',newValue);
alert("new value set:"+newValue);
}
function test(){
alert($(this).data('action'));
}
</script>
在这里尝试:http://jsfiddle.net/2hj3e/
首先单击“检查数据操作值”,您将看到数据操作参数。然后,单击“设置新值”(您会在开发人员工具中看到它已更改),然后再次单击“检查数据操作值”。我希望它能打印123,但它仍会打印“ data / 1 / pageid / 0 /”。
任何人都可以帮助我理解这一点,并指导我如何解决此问题。
最佳答案
jQuery仅在您首次调用data-
时从.data()
属性中提取值。之后,它实际上将缓存它们,因此即使您更新或添加了另一个data-
属性,它也不会反映在对.data()
的调用中。如果要在该首次调用后更新数据,则需要使用.data('action', newvalue)
进行设置。
资料来源:http://api.jquery.com/data/#data-html5
10-02 17:29