0

我在使用 ajax 生成的弹出窗口(简单 div)中包含 2 个 javascript 文件。

<script type="text/javascript" src="<?php echo JS ?>pm.js"></script>
<script type="text/javascript" src="<?php echo JS ?>chat.js"></script>

当您关闭弹出窗口并重新打开它时,两个文件中的 jQuery 绑定函数会执行两次。

例如

//connection
    $(document).bind('connect', function() {
            var conn = new Strophe.Connection('my-http-binding-url');
             conn.connect(inbox.data.jid, inbox.data.pass, function(status){
            inbox.connection = conn;
             alert(status)
            });
});

我第一次打开弹出窗口时,它显示警报消息:5,这意味着它连接成功。

但是当我关闭弹出窗口并重新打开它时,它会向我显示两次消息...我假设代码被执行了两次,因为它没有被卸载。

4

1 回答 1

2

您可以通过以下两种不同的方式来实现

  1. 在 Iframe 中打开您的弹出窗口并在关闭弹出窗口时销毁 Iframe
  2. 如果您不使用 iframe,则将这些脚本标记从“弹出”模板中移出,并将它们保留在“头”内或仅在结束正文标记上方。

注意:一旦加载,您将无法删除 javascript。使用 "Firebug" 或 "Chrome Developer Tool" 的网络选项卡并确保没有多次加载 javascript。

编辑:您可以在 ajax 完成后访问动态 HTML

$.ajax({
   ...,
   ...,
   success: function afterAjax(){
      // Insert dynamic HTML in Document
      // Any jQuery selector/function you can use here
    }
}
于 2013-10-08T15:22:22.317 回答