Bug相关

作者: GoldenSide | 来源:发表于2018-12-10 17:08 被阅读0次

    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以上,

    相关文章

      网友评论

          本文标题:Bug相关

          本文链接:https://www.haomeiwen.com/subject/vordhqtx.html