在什么情况下,此代码将返回 0?
$(this).parent().data("id")
而这段代码,会返回真正的价值吗?
$(this).parent().attr("data-id")
谢谢。
在什么情况下,此代码将返回 0?
$(this).parent().data("id")
而这段代码,会返回真正的价值吗?
$(this).parent().attr("data-id")
谢谢。
如果.data("id")
和.attr("data-id")
正在返回不同的值,则数据属性的值id
已经通过 jQuerydata()
函数更新,或者data-id
属性值自第一次调用.data("id")
.
jQuerydata()
函数将使用data-
元素的属性来初始化该数据属性的值。但是,对数据属性的更改不会反映在 HTML 中。因此使用更新值data()
不会同时更新属性。
从文档中:
data- 属性在第一次访问 data 属性时被拉取,然后不再被访问或改变(然后所有数据值都存储在 jQuery 内部)。
HTML
<div id="myDiv" data-id="realValue"></div>
jQuery
$('#myDiv').data('id'); //returns 'realValue'
$('#myDiv').data('id', 0);
$('#myDiv').data('id'); //returns 0
$('#myDiv').attr('data-id'); //returns 'realValue'