我正在对 Collapse javascript 组件进行一些测试,但我发现尝试显示#collapseOne
div 元素中的数据属性时出现了一些奇怪的现象。
我使用他们网站上的引导程序示例进行此测试:
<div class="accordion" id="accordion2">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
Collapsible Group Item #1
</a>
</div>
<div id="collapseOne" class="accordion-body collapse in">
<div class="accordion-inner">
Anim pariatur cliche...
</div>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
Collapsible Group Item #2
</a>
</div>
<div id="collapseTwo" class="accordion-body collapse">
<div class="accordion-inner">
Anim pariatur cliche...
</div>
</div>
</div>
</div>
我将此代码启动到我的控制台中:
JSON.stringify($('div#collapseOne').data())
我知道{}
这是正常的,因为我在这个元素上没有data
属性,但是如果我单击第二个手风琴,然后再次启动
JSON.stringify($('div#collapseOne').data())
我得到"{"collapse":null}"
了,但是在控制台中,div 看起来像:
<div id="collapseOne" class="accordion-body collapse" style="height: 0px;">...</div>
所以,由于没有data-collapse
属性,我不明白如何.data()
返回这个......?
我不明白的第二个行为是,如果我点击第一个手风琴然后启动
JSON.stringify($('div#collapseOne').data())
我在 chrome 上收到此错误TypeError: Converting circular structure to JSON
,而 firefox 能够打印
{"collapse":{"$element":{"0":{"jQuery191023166512553611396":4},"context":{"jQuery191023166512553611396":4},"length":1},"options":{"toggle":"collapse","parent":"#accordion2"},"$parent":{"length":1,"0":{},"context":{"jQuery191023166512553611396":1,"location":{}},"selector":"#accordion2"},"transitioning":0}}
我真的很想知道这些数据隐藏在哪里,因为我无法通过检查元素在 HTML 上看到它。