目的:点击div时展开/折叠ul
问题:展开时元素的height数值是从哪里获取的?
HTML结构如下:
<li>
<div></div>
<ul>
</ul>
</li>
jQuery代码如下
$("div").click(function() {
var li = $(this).parent(),//获取父元素li
ul = li.find("ul"),//获取ul(要折叠/展开的部分)
height = ul.height();//获取高度(未展开时应该为0)
ul.data("data-height") || ul.data("data-height", height),//写入数据,ul.data("data-height")此时返回undefined(false),因此将height===0的数据写入ul.data("data-height")
ul.is(":visible") ? ul.animate({//动画流程:如果visible,折叠到高度0并隐藏
height: "0px"
},
230,
function() {
ul.hide()
}) : (ul.show(), ul.css({//否则先显示,再设置高度为0,再展开
height: "0px"
}), ul.animate({
height: ul.data("data-height") + "px"//这里有问题,"data-height"此时的数据应该为0,为何ul还能正常展开?
},
230)
);
求教!!!
好了,我看过你的问题了,为啥不是:
以上是我觉得应该的代码逻辑,下面给你分析一下代码