JQuery Unbind然后绑定

时间:2012-08-02 19:14:21

标签: jquery bind

我在这个主题上找到了很多例子。但是,我并不完全理解。我的逻辑看起来是否正确?我有一个div作为按钮(类.myClass)我不希望它可点击,除非myCount> = 1.

// I want to unbind if myCount == 0
if ( myCount == 0) {
 $('.myClass').unbind().css("opacity","0.5");
} else {
 // **would this rebind?**
 $('.myClass').click(callMyFunction);
}

3 个答案:

答案 0 :(得分:2)

我不确定你想要实现什么,但.unbind()在没有参数的情况下调用时会删除附加到元素的所有处理程序。因此,$('.myClass').unbind()会删除附加到元素.myClass的所有事件处理程序。由于您似乎只是添加了一个事件处理程序click,因此最好只取消绑定click处理程序,如下所示:$('.myClass').unbind('click')。这样,如果您稍后添加其他事件,则不会混淆为什么其他事件被解除绑定。

答案 1 :(得分:2)

click(callMyFunction).bind("click", callMyFunction).on("click", callMyFunction)的简写。

绑定使用on()取消绑定使用off()。这些是自jQuery 1.7以来的首选方法。如果您使用的是旧版本,请使用bind()unbind()delegate()undelegate()

$('.myClass').off('click')

并绑定

$('.myClass').on('click', function(){});

正如另一篇文章所述,使用命名空间是对事件进行分类的另一种方法,例如click.mynamespace

有关不同可用绑定方法的更多详细信息,请参阅this post,并在更换内容和原因时引入了这些方法。

更多资源:

答案 2 :(得分:2)

您可以使用on()的命名空间事件。 bind()已被弃用。

var foo = function () { ... }

if (myCount)
  $('.myclass').on('click.foo', foo)
else
  $('.myclass').off('.foo')