Как загрузить Dialog JQuery UI дважды, когда этот диалог загружает страницу динамически? - PullRequest
1 голос
/ 04 августа 2011

У меня есть этот код:

 $(function(){

          $('#dialog').dialog({
              autoOpen: false,
              closeOnEscape: false,
              modal: true,
              width: 450,
              buttons: {
                  "Enviar": function() {
                      $('#new_message').submit();
                  }
              }
          });

          $('#dialog_link').click(function(){
              $('#dialog').load('/messages/new');
              $('#dialog').dialog("open");
          });

      });

Когда я нажимаю в первый раз, диалог открывается, но во второй раз он не открывается, и я знаю, что проблема в том, когдаиспользуйте метод .load, когда я комментирую этот код, диалоговое окно всегда открывается при нажатии на ссылку.

Как это исправить?

ps: я использую с Rails 3.

1 Ответ

0 голосов
/ 04 августа 2011

Из-за очень странного поведения диалогов jQuery вот как я обнаружил, что лучше всего справиться с этой ситуацией:

Я строю свой HTML так:

<div id="myDialog">
</div>

... dynamically loaded HTML comes in a <div class="clearOnClose"></div> container

А потом мой javascript:

var myDialog = $('#myDialog');

...

if (myDialog.is('.ui-dialog-content')) {
    myDialog.dialog('open');
} else {
    myDialog.dialog({ modal: true, position: [200, 100], close: clearOnClose, etc. other options... });
}

...

// need to call on dialogs to make sure they don't interfere with each other
var clearOnClose = function (event, ui) {
    jQuery(this).find('div.clearOnClose').html('');
};
...