2013-10-08 3 views
0

У меня есть 2 файла javascript, включенных в всплывающее окно (простой div), сгенерированный с помощью ajax.Загрузка с загрузкой 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, что означает, что соединение успешно установлено.

Но когда я закрываю всплывающее окно и снова его открываю, он показывает мне сообщение дважды ... Я предполагаю, что код выполняется дважды, потому что он не выгружен.

+0

вы не можете выгрузить JavaScript. Как только он будет выполнен, эффекты на dom не исчезнут, просто удалив javascript. –

+0

Я знаю, что я должен нарушить функцию с помощью другой аффектации, например 'var connect = function() {}' или что-то вроде этого Но здесь у меня есть связанная функция, как я могу это достичь? – SmootQ

+2

отвяжите его с помощью метода .unbind. –

ответ

2

Вы можете достичь, следуя два различных способа

  1. Откройте всплывающее окно в Iframe и уничтожить Iframe при закрытии всплывающего окна
  2. Если вы не используете Iframe, а затем переместить эти сценария тег из «всплывающего окна» шаблон и держать их в пределах «головы» или чуть выше закрытия тега тела.

Примечание: вы не можете удалить javascript после его загрузки. Используйте вкладку «Firebug» или «Chrome Developer Tool» и убедитесь, что javascript не загружен несколько раз.

Edit: Вы можете получить доступ к динамической HTML после завершения Ajax

$.ajax({ 
    ..., 
    ..., 
    success: function afterAjax(){ 
     // Insert dynamic HTML in Document 
     // Any jQuery selector/function you can use here 
    } 
} 
+0

Большое вам спасибо, я хочу использовать второй способ, но .. Я не могу получить доступ к элементам DQ JQuery в результате Ajax извне ... вот почему я включил их в результат ajax. – SmootQ

+1

@SmootQ Почему? Вы можете сделать это, посмотрев мое редактирование. Если я ошибаюсь, объясните свою проблему бит –

+1

ok, переместите функцию вне вызова и дайте ему имя. таким образом вы можете добраться до него откуда угодно и легко отвязать его. – dandavis

Смежные вопросы