js鼠标经过tab选项卡时实现切换延迟


Posted in Javascript onMarch 24, 2017

       偶然间在浏览网页时,发现这样的效果。当鼠标不经意间滑过tab时并不会切换,当鼠标停留在上面一段时候后才会切换。

个人觉得用户体验不错,优点是1.当用户只是滑过标签,并不需要切换,而此时如果切换标签需要请求数据时,会避免不必要的异步请求;2.避免页面在用户不需要的时候切换跳动,影响用户体验。

网上查阅了几个方法,发现下面的方法更简洁有效。整理下来,供以后参考。

其中的重点是那段js代码:原理是,通过hover的时候设置定时器,延迟执行切换方法,离开时,清楚计时器。当hover的时间小于延迟时间时,会清楚计时器,不会执行切换方法。仅当停留时间大于延迟时间才会切换。这样能有效避免滑过tab触发切换事件。

复制代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="js/jquery.1.11.3.min.js"></script>
    <script>
      $(function() {
        var t_li = $(".tab")
        var c_li = $(".tab-content div")
        t_li.hover(function() {
          var i = t_li.index($(this));

          function way() {
            t_li.removeClass("cur").eq(i).addClass("cur");
            c_li.hide().eq(i).show();
          }
          timer = setTimeout(way, 500);
        }, function() {
          clearTimeout(timer);
        });
      });
    </script>
    <style>
      .head {
        width: 300px;
        height: 50px;
        border: 1px dashed #ccc;
      }
      
      .tab {
        width: 50%;
        float: left;
        line-height: 50px;
        cursor: pointer;
      }
      
      .cur {
        border-bottom: 2px solid red;
      }
    </style>
  </head>
  <body>
    <div style="width: 300px;margin-left: 300px;" class="main">
      <div class="head">
        <div class="tab cur">tab1</div>
        <div class="tab">tab2</div>
      </div>
      <div class="tab-content">
        <div>tab1的内容<br>tab1的内容<br>tab1的内容<br></div>
        <div style="display: none;">tab2的内容<br>tab2的内容<br>tab2的内容<br></div>
      </div>
    </div>
  </body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
070823更新的一个[消息提示框]组件 兼容ie7
Aug 29 Javascript
符合标准的js表单提交的代码
Sep 13 Javascript
jQuery中odd选择器的定义和用法
Dec 23 Javascript
js实现不提交表单获取单选按钮值的方法
Aug 21 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
Nov 07 Javascript
angularjs表格分页功能详解
Jan 21 Javascript
jQuery Checkbox 全选 反选的简单实例
Nov 29 Javascript
js控制按钮,防止频繁点击响应的实例
Feb 15 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
Jan 09 jQuery
element ui里dialog关闭后清除验证条件方法
Feb 26 Javascript
vue 引用自定义ttf、otf、在线字体的方法
May 09 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
Mar 31 Javascript
详解angular2实现ng2-router 路由和嵌套路由
Mar 24 #Javascript
JS实现向iframe中表单传值的方法
Mar 24 #Javascript
JS正则替换去空格的方法
Mar 24 #Javascript
原生js封装自定义滚动条
Mar 24 #Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 #Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 #jQuery
JS得到当前时间的方法示例
Mar 24 #Javascript
You might like
PHP初学者头疼问题总结
2006/10/09 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
jQuery 创建Dom元素
2010/05/07 Javascript
checkbox使用示例
2013/08/23 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
关于JavaScript的单双引号嵌套问题
2017/08/20 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Python中使用Counter进行字典创建以及key数量统计的方法
2018/07/06 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python随机模块random使用方法详解
2020/02/14 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
《夏夜多美》教学反思
2014/02/17 职场文书
小学新学期寄语
2014/04/02 职场文书
项目采购员岗位职责
2014/04/15 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
大学迎新标语
2014/06/26 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
学生打架检讨书
2014/10/20 职场文书
离婚案件原告代理词
2015/05/23 职场文书
党员反邪教心得体会
2016/01/15 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL