[英]How to append data only one time after click with jQuery
所以,我有这个小功能:
carousel_controls_buttons.live('click', function(e){
setTimeout(function(){
info_board_span.append(info_board_description);
e.preventDefault();
}, 450);
});
我想做的是在两次,三次快速单击后停止一次附加info_board_description
。 当我执行此操作时,此数据会追加一次以上,并且内容重复。 我如何才能在450毫秒内停止此操作? 谢谢。
使用布尔值来控制它。
var flag = true;
carousel_controls_buttons.live('click', function(e){
e.preventDefault();
if (flag) {
setTimeout(function(){
info_board_span.append(info_board_description);
flag = true;
}, 450);
flag = false;
}
});
您可以使用clearTimeout
函数:
var t = '';
carousel_controls_buttons.live('click', function(e){
clearTimeout(t);
t = setTimeout(function(){
info_board_span.append(info_board_description);
e.preventDefault();
}, 450);
});
示例: http : //jsfiddle.net/xhSvC/
请注意,不建议使用live
方法,而应使用on
方法。
虽然其他答案应该起作用,但我想向您介绍debounce
和throttle
的概念。
http://benalman.com/projects/jquery-throttle-debounce-plugin/是您可以用来实现所需功能的一个插件,即确保某个功能每x秒执行一次。
油门与反跳
节流和反跳都会限制函数的执行速度,但是哪种方法适合给定情况?
好吧,简单地说:尽管限制将函数的执行限制为每延迟毫秒不超过一次,但反跳保证了该函数将只执行一次(给定阈值)。
carousel_controls_buttons.live('click', function(e) {
$.debounce(450, function() {
info_board_span.append(info_board_description);
e.preventDefault();
});
});
把一个数放在那儿说var count = 0; 命中时递增,如果count == 1则检查条件,如果不保留则附加条件
有一个事件可以实现这一目标:
carousel_controls_buttons.one('click', function() {
setTimeout(function(){
info_board_span.append(info_board_description);
e.preventDefault();
}, 450);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.