扫码关注官方订阅号
我正在做了一个简单的tip功能,当多少秒后自动隐藏。如下代码所示: 出现的问题是,当我一个tip还未执行计时器中的动作,就点击不同的目标再次调用tip,会清除掉计时器,而计时器中的动作也仅仅在最新调用tip的目标上执行。 请问,我这个tip该如何设计,才能做到对应清除计时器?
html Document click me click me click me
html
Document click me click me click me
click me
光阴似箭催人老,日月如移越少年。
setTimeout()会返回一个标示此程序的ID,只要clearTimeOut(id)貌似就可以了。PS:我是新手,只是随便说说,有任何问题希望题主不要介意。
setTimeout()
ID
clearTimeOut(id)
楼主可以看下 power-tip的源码学习下
http://stevenbenner.github.io/jquery-powertip/
解决方案:
html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <style type="text/css"> .none{display: none;} </style> </head> <body> <p class="test"><button>click me</button><span class="msg"></span></p> <p class="test"><button>click me</button><span class="msg"></span></p> <p class="test"><button>click me</button><span class="msg"></span></p> <script type="text/javascript"> $.extend({ tip: function(options) { var param = $.extend({ obj: "#message", text: '', timeout: 3000, }, options); var obj = param.obj instanceof $ ? param.obj : $(param.obj); var count = obj.data('count') || 1; clearTimeout(obj.data('count')); obj.html(param.text).removeClass('none'); obj.data('count',setTimeout(function() { obj.addClass('none'); }, param.timeout)); } }); $('button').on('click', function(event) { var $this = $(this); $.tip({obj:$this.next('span'),text:"显示信息,3秒后隐藏"}); }); </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <style type="text/css"> .none{display: none;} </style> </head> <body> <p class="test"><button>click me</button><span class="msg"></span></p> <p class="test"><button>click me</button><span class="msg"></span></p> <p class="test"><button>click me</button><span class="msg"></span></p> <script type="text/javascript"> $.extend({ tip: function(options) { var param = $.extend({ obj: "#message", text: '', timeout: 3000, }, options); var obj = param.obj instanceof $ ? param.obj : $(param.obj); var count = obj.data('count') || 1; clearTimeout(obj.data('count')); obj.html(param.text).removeClass('none'); obj.data('count',setTimeout(function() { obj.addClass('none'); }, param.timeout)); } }); $('button').on('click', function(event) { var $this = $(this); $.tip({obj:$this.next('span'),text:"显示信息,3秒后隐藏"}); }); </script> </body> </html>
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
setTimeout()会返回一个标示此程序的ID,只要clearTimeOut(id)貌似就可以了。PS:我是新手,只是随便说说,有任何问题希望题主不要介意。楼主可以看下 power-tip的源码学习下
http://stevenbenner.github.io/jquery-powertip/
解决方案: