jquery禁用文档功能

时间:2014-12-03 20:05:39

标签: javascript jquery

我有这个简单的功能,需要使用当前的textarea进行更新。

  $(document).on("keydown", updated_textarea_var, function (e) {
     // do stuff
  });

为此,我禁用上一个函数并使用更新的变量运行一个新函数。问题是以前的功能没有禁用。

$(selector).off();

我的变量是正确的。 .off()可以与文档功能一起使用吗?还是我不正确地使用它? 或者也许有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:7)

.off()必须与.on()使用的相同选择器和事件一起使用。所以,解开这个:

$(document).on("keydown", updated_textarea_var, function (e) {

你会用这个:

$(document).off("keydown", updated_textarea_var);

您必须定位同一个对象(原始事件附加到的对象),并且您必须定位相应的事件,以便jQuery知道要删除哪些事件处理程序。如果您想要更精细的匹配,可以选择定位辅助选择器和/或实际的回调函数。


但是,由于您使用的是委托事件处理,因此您可能无需关闭并重新启用事件处理。如果我们更多地了解您实际上要做的事情,可能会有更清晰的选择。


例如,如果您只是尝试更改事件处理程序所针对的textarea,那么您可以在事件处理程序中使用类名(让我们说那里有一个类)名为" target")的名称如下:

$(document).on("keydown", ".target", function (e) {

然后,要更改事件处理程序所处的textarea,只需从一个textarea中删除类名并将其添加到另一个textarea中。这是委派事件处理的关键功能。