Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery.data()和setAttribute之间的差异_Javascript_Jquery - Fatal编程技术网

Javascript jQuery.data()和setAttribute之间的差异

Javascript jQuery.data()和setAttribute之间的差异,javascript,jquery,Javascript,Jquery,1) 设置用户数据时(请参阅): 在使用浏览器的检查器分析元素时,我可以看到: <div id="myelement1" data-size="20">Blah</div> <div id="myelement2">Blah</div> 在使用浏览器的检查器分析元素时,我可以看到: <div id="myelement1" data-size="20">Blah</div> <div id="myelement2

1) 设置用户数据时(请参阅):

在使用浏览器的检查器分析元素时,我可以看到:

<div id="myelement1" data-size="20">Blah</div>
<div id="myelement2">Blah</div>
在使用浏览器的检查器分析元素时,我可以看到:

<div id="myelement1" data-size="20">Blah</div>
<div id="myelement2">Blah</div>
废话

为什么元素出现在1)中的DOM中,而不是2)?

jQuery
.data('size',20)
如何存储数据,如果数据不在DOM中,存储在哪里?

(我在JS方面还不够高级,无法在代码中找到实现此功能的确切位置)

jQuery没有将物理属性附加到元素。它保留一个内部对象(称为
缓存
),在其中保存数据,并引用它对应的元素-它不存储在DOM或属性中。

元素的数据存储在内部,即jQuery代码的本地集合中

从以下文件:

“数据属性在第一次调用数据属性时被拉入 被访问,然后不再被访问或变异(所有数据 然后将值存储在jQuery中

请注意,尽管
data
方法不会更改数据属性,但设置数据属性会将其放入DOM中,并使用
data
方法使其可用:

$('#myelement2').attr('data-size', 20);

console.log($('#myelement2').data('size')); // shows 20
演示:

data()
存储在内部对象中,
$.cache