防止Jquery.click切换函数因过度点击而反复运行
Preventing Jquery .click toggle function from running over and over with excess clicking
我在jQuery中构建了一个.cacktoggle函数,就我的一生而言,我无法对它产生.stop式的效果,基本上我不希望它在mash点击时反复播放。
我想把它应用到函数中,这样它就自我包含了,这就是我坚持的地方。
JS小提琴链接
(function($) {
$.fn.clickToggle = function(func1, func2) {
var funcs = [func1, func2];
this.data('toggleclicked', 0);
this.click(function() {
var data = $(this).data();
var tc = data.toggleclicked;
$.proxy(funcs[tc], this)();
data.toggleclicked = (tc + 1) % 2;
});
return this;
};
}(jQuery));
$('div').clickToggle(function() {
$('.testsubject').fadeOut(500);
}, function() {
$('.testsubject').fadeIn(500);
});
<div class="clickme">click me fast</div>
<div class="testsubject">how do i stop it playing over and over if you click alot</div>
点击似乎是很多人都会使用的东西,所以我认为在这里问它可能会很有用
通过向布尔变量fadeInProgress
添加检查,可以选择仅在fadeInProgress
为false
时对动画进行排队。然后将该值设置为true
并执行动画。动画完成后,将该值设置为false
。
var fadeInProgress = false;
$('div').clickToggle(function() {
if (!fadeInProgress) {
fadeInProgress = true;
$('.testsubject').fadeOut(700, function(){fadeInProgress = false;});
}
}, function() {
if (!fadeInProgress) {
fadeInProgress = true;
$('.testsubject').fadeIn(700, function(){fadeInProgress = false;});
}
});
var clicked = false;
var doing = false;
$(".clickme").click(function(e) {
if (doing) {
return;
} else {
doing = true;
}
doing = true;
clicked = !clicked;
if (clicked) {
$('.testsubject').fadeOut(700, function() {
doing = false
});
} else {
$('.testsubject').fadeIn(700, function() {
doing = false;
});
}
});
这个例子是一个简单的切换,它只允许你在它不做任何事情时点击。我在IRC上解释过,但作为一个例子,该函数仅在doing
设置为false时运行,而只有在fadeIn()
或fadeOut
的回调函数thingymaggier之后设置时才会运行。
相关文章:
- 防止Jquery.click切换函数因过度点击而反复运行
- 如何阻止一个Submit按钮运行Submit Click功能
- jQuery:当使用.click,.trigger()进行操作时,只有两个.click()事件中的第一个会运行
- 单击在jquery.click上运行的函数
- jQuery 函数在页面加载时运行,而不是在 Click 事件上运行
- .click() 事件在 上运行
- 为什么这个jQuery $.click()在页面加载时运行
- $(.'类名').click(function(){..})停止跨浏览器运行
- 如何在ajax运行时禁用click功能,相同的click启动ajax运行,在ajax完成后,重新启用click功能
- 确保jQuery on click在href触发之前运行
- Karma/jasmine Angular指令submit click单元测试在一堆运行时失败,但不是单独运行
- 触发('click')导致“脚本运行缓慢,是否要停止它?”
- 如何在运行ng-click处理程序之前或期间切换加载指示器?
- jQuery .click事件在页面加载时运行
- 在运行另一个函数之前完成.click()函数
- 在Firefox中,click()设置后不运行复选框.Disabled = false
- 如何在jQuery触发器上运行回调函数("click")
- AngularJS -在使用ng-click运行函数之前需要输入字段
- jQuery无法在动态生成的按钮或p标签上运行.click事件
- setInterval没有在click()函数内运行