Jquery如何取消触发函数

我正在创建一个动态表单。 我有一个下拉列表,当用户进行选择时,将查询数据库以查看该项是否需要隐私。 如果没有,则会向表单添加其他字段。 此外,还会触发邮政编码查找ajax函数,但只有在项目不是私有时才会触发。

这一切都很好,直到用户改变主意…

以下是从下拉列表中选择项目时运行的代码的相关部分;

success:function(response){ if(response === '1'){ // do stuff for item that requires privacy // do NOT trigger zip_check function }else if(response === '0'){ // do stuff for item that is public + $('#zip-code').keyup(zip_check); // triggers a function to check zip code } } 

这可以按预期工作,直到用户选择非私有项然后改变他们的想法并选择私有项,在这种情况下,即使现在不应该触发zip_check函数仍将运行。 我哪里错了?

我认为你正在寻找off (在(response===1){} )中添加:

 $('#zip-code').off('keyup', zip_check); 

这样您就可以从click事件中删除该函数。 如果您想删除所有事件,请使用

 $('#zip-code').off('keyup'); 

如果您想要关闭所有活动:

 $('#zip-code').off(); 

.off()是优于.unbind()方法,而.on().bind()的首选方法

试试这个:

用于绑定:

 $('#zip-code').on('keyup',zip_check); 

并解除绑定:

 $('#zip-code').off('keyup',zip_check);