我在jQuery中构建了一个.clicktoggle函数,对于我来说,我无法在其上获得.stop之类的效果,基本上,我不希望它被mash单击时一遍又一遍地播放。
我希望将其应用到该函数中,以便其自我包含,这就是即时通讯卡住的地方。
JS fiddle link
(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>
切换.click似乎是很多人会使用的东西,所以我认为在这里提问可能有用
最佳答案
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
的回调函数whatymajigger之后设置它时才会发生。关于javascript - 防止Jquery .click切换功能因过度点击而一遍又一遍地运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36562220/