Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 取消绑定并重新绑定单击css转换结束_Javascript_Jquery - Fatal编程技术网

Javascript 取消绑定并重新绑定单击css转换结束

Javascript 取消绑定并重新绑定单击css转换结束,javascript,jquery,Javascript,Jquery,我在使用.bind()和.unbind()功能时遇到问题。当按钮被点击时,它应该改变盒子的颜色。在此期间,通过解除“单击”功能的绑定来禁用该按钮。但是,当css转换完成时,我在重新绑定单击时遇到了问题 到目前为止,我得到的是: $('button').on('click', function(){ $('button').unbind('click'); $('.box').toggleClass('color'); $('.box').one('webkitTran

我在使用
.bind()
.unbind()
功能时遇到问题。当按钮被点击时,它应该改变盒子的颜色。在此期间,通过解除“单击”功能的绑定来禁用该按钮。但是,当css转换完成时,我在重新绑定单击时遇到了问题

到目前为止,我得到的是:

$('button').on('click', function(){
    $('button').unbind('click');

    $('.box').toggleClass('color');

    $('.box').one('webkitTransitionEnd transitionend', function(e){
        console.log('transition ended')
        $('button').bind('click')   
    });
});

绑定时需要传递单击处理程序。因此,创建一个函数引用,然后在绑定处理程序时使用它

function click() {
    $('button').off('click.transition');

    $('.box').toggleClass('color');   
}
$('.box').on('webkitTransitionEnd transitionend', function (e) {
    console.log('transition ended')
    $('button').on('click.transition', click)
});
$('button').on('click.transition', click);
演示:

另外,在注册/删除处理程序时,请查看的用法,因为如果在按钮中添加了其他单击处理程序,我们不想干扰它

也不要在另一个事件处理程序中添加事件处理程序


也看看


演示:

绑定时需要传递单击处理程序。因此,创建一个函数引用,然后在绑定处理程序时使用它

function click() {
    $('button').off('click.transition');

    $('.box').toggleClass('color');   
}
$('.box').on('webkitTransitionEnd transitionend', function (e) {
    console.log('transition ended')
    $('button').on('click.transition', click)
});
$('button').on('click.transition', click);
演示:

另外,在注册/删除处理程序时,请查看的用法,因为如果在按钮中添加了其他单击处理程序,我们不想干扰它

也不要在另一个事件处理程序中添加事件处理程序


也看看


演示:

绑定时需要传递单击处理程序。因此,创建一个函数引用,然后在绑定处理程序时使用它

function click() {
    $('button').off('click.transition');

    $('.box').toggleClass('color');   
}
$('.box').on('webkitTransitionEnd transitionend', function (e) {
    console.log('transition ended')
    $('button').on('click.transition', click)
});
$('button').on('click.transition', click);
演示:

另外,在注册/删除处理程序时,请查看的用法,因为如果在按钮中添加了其他单击处理程序,我们不想干扰它

也不要在另一个事件处理程序中添加事件处理程序


也看看


演示:

绑定时需要传递单击处理程序。因此,创建一个函数引用,然后在绑定处理程序时使用它

function click() {
    $('button').off('click.transition');

    $('.box').toggleClass('color');   
}
$('.box').on('webkitTransitionEnd transitionend', function (e) {
    console.log('transition ended')
    $('button').on('click.transition', click)
});
$('button').on('click.transition', click);
演示:

另外,在注册/删除处理程序时,请查看的用法,因为如果在按钮中添加了其他单击处理程序,我们不想干扰它

也不要在另一个事件处理程序中添加事件处理程序


也看看


演示:

我将使用标志,而不是绑定/重新绑定事件处理程序:

var animating = false;

$('button').on('click', function() { 
    if (animating) return;
    animating = true;

    $('.box').toggleClass('color')
             .on('webkitTransitionEnd transitionend', function(e) {
                 animating = false;       
             });
});

我将使用标志,而不是绑定/重新绑定事件处理程序:

var animating = false;

$('button').on('click', function() { 
    if (animating) return;
    animating = true;

    $('.box').toggleClass('color')
             .on('webkitTransitionEnd transitionend', function(e) {
                 animating = false;       
             });
});

我将使用标志,而不是绑定/重新绑定事件处理程序:

var animating = false;

$('button').on('click', function() { 
    if (animating) return;
    animating = true;

    $('.box').toggleClass('color')
             .on('webkitTransitionEnd transitionend', function(e) {
                 animating = false;       
             });
});

我将使用标志,而不是绑定/重新绑定事件处理程序:

var animating = false;

$('button').on('click', function() { 
    if (animating) return;
    animating = true;

    $('.box').toggleClass('color')
             .on('webkitTransitionEnd transitionend', function(e) {
                 animating = false;       
             });
});

这肯定不是你想做的。它似乎过于复杂,我无法想象一个好的用例场景

也就是说,您需要重新附加要在最终bind语句中执行的功能。调用函数绑定到click事件,但不告诉函数要附加什么

你需要这样的东西: $('button').bind('click',function(){…})


然而,这可能不是你真正想要的。听起来您只是想将按钮的“禁用”属性设置为false,然后在动画之后设置为true

这肯定不是你想做的。它似乎过于复杂,我无法想象一个好的用例场景

也就是说,您需要重新附加要在最终bind语句中执行的功能。调用函数绑定到click事件,但不告诉函数要附加什么

你需要这样的东西: $('button').bind('click',function(){…})


然而,这可能不是你真正想要的。听起来您只是想将按钮的“禁用”属性设置为false,然后在动画之后设置为true

这肯定不是你想做的。它似乎过于复杂,我无法想象一个好的用例场景

也就是说,您需要重新附加要在最终bind语句中执行的功能。调用函数绑定到click事件,但不告诉函数要附加什么

你需要这样的东西: $('button').bind('click',function(){…})


然而,这可能不是你真正想要的。听起来您只是想将按钮的“禁用”属性设置为false,然后在动画之后设置为true

这肯定不是你想做的。它似乎过于复杂,我无法想象一个好的用例场景

也就是说,您需要重新附加要在最终bind语句中执行的功能。调用函数绑定到click事件,但不告诉函数要附加什么

你需要这样的东西: $('button').bind('click',function(){…})


然而,这可能不是你真正想要的。听起来您只是想将按钮的“禁用”属性设置为false,然后在动画之后设置为true

不要解开。使用布尔值:

var onTrans = false;
$('button').on('click', toggle);

function toggle() {
    if (!onTrans){
        $('.box').toggleClass('color');
        onTrans = true;
        $('.box').on('webkitTransitionEnd transitionend', function (e) {
            onTrans = false;
        });
    }
}

不要解开绑定。使用布尔值:

var onTrans = false;
$('button').on('click', toggle);

function toggle() {
    if (!onTrans){
        $('.box').toggleClass('color');
        onTrans = true;
        $('.box').on('webkitTransitionEnd transitionend', function (e) {
            onTrans = false;
        });
    }
}

不要解开绑定。使用布尔值:

var onTrans = false;
$('button').on('click', toggle);

function toggle() {
    if (!onTrans){
        $('.box').toggleClass('color');
        onTrans = true;
        $('.box').on('webkitTransitionEnd transitionend', function (e) {
            onTrans = false;
        });
    }
}

不要解开绑定。使用布尔值:

var onTrans = false;
$('button').on('click', toggle);

function toggle() {
    if (!onTrans){
        $('.box').toggleClass('color');
        onTrans = true;
        $('.box').on('webkitTransitionEnd transitionend', function (e) {
            onTrans = false;
        });
    }
}