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