SmartyStreets jQuery.liveaddress插件,如何取消绑定事件

时间:2016-01-27 21:24:47

标签: javascript jquery jquery-plugins smartystreets

我在角度单页应用中使用智能街道jquery.liveaddress插件。当我转换到下一页时,我需要从liveaddress实例解除绑定所有事件监听器。现在,如果我回到页面,所有事件都会被触发两次,然后是下次页面,三次。

我已经尝试过我能想到的一切。我的最后一个解决方案是取消绑定$(document)中的所有事件名称,因为它看起来就像是插件将所有事件附加到的地方。但即使这样也行不通。

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");

2 个答案:

答案 0 :(得分:1)

对于任何试图在角度应用程序中实现SmartyStreets jquery.liveaddress插件的人都可以。

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

在我的情况下,我在一个指令中实例化SmartyStreets,所以将所有的eventHandlers放在范围内,并在$ destroy上调用liveAddress.deactivate()。没有更多的重复事件。

答案 1 :(得分:0)

在jQuery中,事件处理函数存储在一个数组中。因此,unbind()函数仅查找上述数组中的函数。这进一步意味着您只能unbind()已添加bind()的事件处理程序。

查看.bind()

上的jQuery文档