unbind并不真正有效:还有其他解决方案吗?

时间:2012-02-26 18:58:06

标签: javascript jquery unbind

我正试图“停止”#mydiv上的点击操作,我的意思是如果我在#mydiv上点击100次我希望不透明度只发生一次,而不是100次,我在网上找到了这个解决方案“unbind”,我认为它第一次使用它有效,但现在它不起作用,这可能是一个简单的错误,但我真的不知道在哪里看。我评论了我的所有jquery页面,我只有文档就绪行和那两个函数,但它不会停止对点击的操作:

$('#mydiv').bind('click', function() {
  $('.myclass').animate(opacity: 0.25);
});

$('#mydiv').unbind('click', function() {
    $('.myclass').animate(opacity: 0.25);
});

非常感谢你的帮助

2 个答案:

答案 0 :(得分:3)

只需使用:

$('#mydiv').unbind('click');

或者

如果您希望点击仅发生一次,请改为使用one

$('#mydiv').one(function() {
  $('.myclass').animate(opacity: 0.25);
});

答案 1 :(得分:3)

使用jQuery 1.7+:

$('#mydiv').on('click', anim);

$('#mydiv').off('click', anim);


function anim() {
    $('.myclass').animate(opacity: 0.25);
}

你甚至可以这样做:

$('#mydiv').on('click', anim);

function anim() {
    $('.myclass').animate(opacity: 0.25);
    $('#mydiv').off('click', anim);
}

$('#mydiv').one("click", function() {
    $('.myclass').animate(opacity: 0.25);
});

当然应该是:

$('.myclass').animate({opacity: 0.25}, speed);