1

我找到了很多关于这个主题的例子..但是,我并不完全理解。我的逻辑看起来正确吗?我有一个 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);
}
4

3 回答 3

2

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

于 2012-08-02T19:21:23.033 回答
2

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

将 useon()绑定到 unbind use off()。这些是自 jQuery 1.7 以来的首选方法。如果您使用的是旧版本,请使用bind(),unbind()delegate()andundelegate()

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

并绑定

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

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

有关不同可用绑定方法的更多详细信息,请参阅这篇文章,以及何时引入以及替换了什么以及为什么。

更多资源:

于 2012-08-02T19:23:34.880 回答
2

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

var foo = function () { ... }

if (myCount)
  $('.myclass').on('click.foo', foo)
else
  $('.myclass').off('.foo')
于 2012-08-02T19:23:56.043 回答