Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用在动画期间单击元素_Javascript_Jquery_Animation - Fatal编程技术网

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
    }
});