Javascript 禁用在动画期间单击元素
我想防止在某个元素执行某些动画时单击该元素,然后在以后启用它。我曾尝试使用“取消绑定”和“绑定”,但单击仍处于永久禁用状态。 还有别的办法吗Javascript 禁用在动画期间单击元素,javascript,jquery,animation,Javascript,Jquery,Animation,我想防止在某个元素执行某些动画时单击该元素,然后在以后启用它。我曾尝试使用“取消绑定”和“绑定”,但单击仍处于永久禁用状态。 还有别的办法吗 $("something").on("click", function() { $("selected").unbind("click"); $("selected").animate({...}, function() { $("selected").unbind("click"); }); 基本上,我不希望有人
$("something").on("click", function() {
$("selected").unbind("click");
$("selected").animate({...}, function() {
$("selected").unbind("click");
});
基本上,我不希望有人在动画正在进行时单击选定的div,因为单击它将启动另一组动画,而我不希望在两者之间启动 如果正在播放动画,请尝试使用标志变量存储信息:
var animating = false;
$("something").on("click", function () {
animating = true;
$("selected").animate({...
}, 1000, function () {
animating = false;
});
});
$("selected").click(function(){
if (animating) return false;
});
使用jquery的.on()和.off()事件。这是一个例子
您需要执行以下操作:
function flash() {
// do your stuff here
}
$("something").on("click", function() {
$( "body" ).off( "click", "Your Div Selector", flash );
});
$("something").on("click", function() {
$( "body" ).on( "click", "Your Div Selector", flash );
});
使用on和off这种方式,您可以将函数foo“绑定”到特定元素上的单击事件,然后根据需要多次将其关闭和打开。玩得开心;-) 演示: 编辑:更新的答案,我的例子使用了委托,这是没有必要的 应用于您的示例,它将如下所示:
$("something").on("click", function() {
$("selected").off( "click", foo );
$("selected").animate({...}, function() {
$("selected").on( "click", foo );
});
单击将永久禁用
因为当从不绑定时,再次单击“
到$(“某物”)
。尝试:
$("something").on("click", function animate() {
var _this = $(this);
_this.off("click");
$("selected").animate({...}, function() {
_this.on("click",animate);
});
在这里,我使用命名函数来简化再次引用该函数的过程。在
单击
函数中添加一个复选框,以便仅在单击的元素未设置动画时执行动画,如何
$("something").on("click", function() {
$("selected").animate({...});
});
$("selected").on("click",function(){
if(!$(this).is("selected:animated")){
//Start other animation
}
});
虽然这会起作用,但它不会从选择器中删除EventHandler,并且会降低代码的可读性。最好使用on()和off()。那只是我的意见。
$("something").on("click", function() {
$("selected").animate({...});
});
$("selected").on("click",function(){
if(!$(this).is("selected:animated")){
//Start other animation
}
});