日期小插件下载地址:https://www.jq22.com/jquery-info21356
集成到自己程序后发现了以下问题
1. 日期控件初始化的滚动日期没法对齐。
2. 选择日期的时候前端报错:Cannot read property 'childs' of undefined.
排查各种可能的原因,最后发现是我的程序原本将body设置成了display:none,然后在页面加载进行判断是否show(),而这个日期控件的初始化有一大段的代码是放在<script>中,这段<script>放在<body>尾端。
设置成display:none以后,<body>里面所有控件会重新加载,而日期控件涉及到的mobileSelect.js 中和body有关的是这样的
document.body.appendChild(_this.mobileSelect);
默认是加载在body里面的节点后面,但由于设置了display:none,这个加载顺序可能会导致加载不完全找不到相应的节点,因此报错,猜测大概原因应该就是这个。
解决方案是把display:none 改成 visibility:hidden即可。事实证明改完以后就正常了。
display:none 和 visibility:hidden 两者都能将元素隐藏起来,但是两者的区别在于
1. display:none 元素不再占用空间。
2. visibility:hidden使元素在网页上不可见,但仍占用空间。
注意visibility还可能取值为collapse
当设置visibility:collapse后,一般的元素表现与visibility:hidden一样,也会占用空间。但如果该元素是与table相关的元素,例如table row、table column、table column group、table column group等,其表现却跟display:none一样,即其占用的空间也会释放。
在不同浏览器下,对 visibility: collapse 的处理方式不同:
- 1、visibility: collapse 的上述特性仅在 Firefox 下起作用。
- 2、在 IE 即使设置了 visibility: collapse,还是会显示元素。
- 3、在 Chrome 下,即使会将元素隐藏,但无论是否是与 table 相关的元素,visibility: collapse 与 visibility: hidden 没有什么区别,即仍会占用空间。
jQuery 操作 display和visibility
<body style="display:none">
$("body").show();
<body style="visibility:hidden">
$("body").css("visibility","visible");