jquery 相关
-
使用jq的toggle()、toggleClass() 、hide()、slideUp(),fadeOut()等类似有隐藏功能的jq方法时的注意事项
由于用户操作,会引发的非逻辑错误的bug以下代码为例:
<input type="text" autocomplete="false" id="" placeholder="输入金额"> <div class="box"> <ul> <li>我是内容1</li> <li>我是内容2</li> <li>我是内容3</li> ··· </ul> </div>
需求:文档结构为input+div.box>ul>li,ul>li 结构的高度大于box的高度,超出部分scroll,当点击box的时候,展开ul>li,滚动到底部点击最后一个li标签,将li标签的包含的文本内容赋值给input的value,同时box要求被折叠、隐藏、滑出、淡出等从页面消失的效果。
问题描述:(1)当滑动ul>li至底部,ul>li滚动还没有停下来的时候,就马上点击最后一个li标签的时候,可能会出现获取的值
undefined 或者得到了是另一个li标签的文本内容(2)或者是ul>li的高度远远大于box的高度时,就算滚动到底部的,等ul>li都静止了,再点击最后一个li标签同样会出现undefined
原因分析: 获取数据的操作是要延后于显示于隐藏等操作的,所以当点击li标签的时候,js会马上驱动浏览器的内核来重新渲染页面,让box消失等效果, 然后浏览器再来获取页面上的li标签的文本内容,可是现在最底部的那个li标签已经消失不见了,所以你可能得到的是undefined或者是其余li标签的文本内容值
解决办法:我们加上延迟delay(300),这里至少300以上,
网友评论