Разрыв диалога jQuery после закрытия - я использую диалог уничтожения - PullRequest
1 голос
/ 16 апреля 2010

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

Я использую тот же div для отображения других заметок на странице, когда пользователь выбирает просмотр полной заметки.

Код, который я использую для отображения заметок:

    jQuery('span.Notes').live('click', function(){
var note=jQuery(this).data('note');

    jQuery('div#showNote').text(note);
       jQuery('div#showNote').append('<br>');

    jQuery('div#showNote').dialog({
      modal: true,
      close: function(){
      jQuery('div#showNote').dialog('destroy').empty();
        }
    });

    });

Код, который я использую для демонстрационных видеороликов, ОЧЕНЬ похож.

 jQuery('a.demoVid').click(function(){
         var videoUrl=jQuery(this).attr('href');
       jQuery('div#showNote').dialog({
       modal: true,
    height: 400,
    width: 480,
    close: function(){
    jQuery('div#showNote').dialog('destroy').empty();
    }
    });
    swfobject.embedSWF(videoUrl,'showNote','480','390','8.0.0');
 return false;
 });

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

Ответы [ 2 ]

3 голосов
/ 16 апреля 2010

Мое второе предположение заключается в том, что вызов swfobject.embedSWF попирает div # showNote, что каким-то образом сбивает с толку jQuery. Я бы попробовал поместить видео в div внутри диалога, либо:

jQuery('div#showNote').append('<div id="showVideo"></div>').dialog({ ... });
swfobject.embedSWF(videoUrl,'showVideo','480','390','8.0.0');
3 голосов
/ 16 апреля 2010

Ваш диалог нацелен на div#showNote, и идентификаторы элементов должны быть уникальными в документе. Вы должны изменить его, чтобы он создавал новый div для каждого экземпляра диалога, что-то вроде следующего (не проверено):

jQuery( $('<div class="note">') ).dialog({ ... 
   close: function() {
     $(this).dialog('destroy').empty();
   }
});
...