首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SmartyStreets jQuery.liveaddress插件,如何解除绑定事件

SmartyStreets jQuery.liveaddress插件,如何解除绑定事件
EN

Stack Overflow用户
提问于 2016-01-28 05:24:47
回答 2查看 267关注 0票数 0

我在一个angular单页应用中使用了smarty streets jquery.liveaddress插件。当我转换到下一页时,我需要解除所有事件侦听器与liveaddress实例的绑定。现在,如果我返回到页面,所有事件都会触发两次,然后下一次在页面上触发三次。

我已经试过我能想到的所有方法了。我的最后一个解决方案是解除$(document)中所有事件名称的绑定,因为它看起来就是插件附加所有事件的地方。但即使这样也不管用。

代码语言:javascript
复制
jQuery(document).unbind("AddressChanged");
        jQuery(document).unbind("AutocompleteUsed");
        jQuery(document).unbind("VerificationInvoked");
        jQuery(document).unbind("RequestSubmitted");
        jQuery(document).unbind("ResponseReceived");
        jQuery(document).unbind("RequestTimedOut");
        jQuery(document).unbind("AddressWasValid");
        jQuery(document).unbind("AddressWasAmbiguous");
        jQuery(document).unbind("AddressWasInvalid");
        jQuery(document).unbind("AddressWasMissingSecondary");
        jQuery(document).unbind("OriginalInputSelected");
        jQuery(document).unbind("UsedSuggestedAddress");
        jQuery(document).unbind("InvalidAddressRejected");
        jQuery(document).unbind("AddressAccepted");
        jQuery(document).unbind("Completed");
EN

回答 2

Stack Overflow用户

发布于 2016-01-29 08:06:54

对于任何试图在angular应用程序中实现SmartyStreets jquery.liveaddress插件的人来说,这是可以的。

诀窍是不注册匿名事件处理程序。

在我的例子中,我是在一个指令中实例化SmartyStreets,所以将所有的eventHandlers放在scope上,并在$destroy上调用liveAddress.deactivate()。不再有重复的事件。

票数 1
EN

Stack Overflow用户

发布于 2016-01-28 07:42:41

在jQuery中,事件处理函数存储在数组中。因此,unbind()函数只查找前面提到的数组中的函数。这进一步意味着您只能对已经使用bind()添加的事件处理程序进行unbind()

查看.bind()上的jQuery文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35048330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档