JQuery Dialog - из-за IE 6 и 7 - нужно «уничтожить», а не «закрыть» - как восстановить? - PullRequest
1 голос
/ 28 января 2011

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

Мои навыки работы с javascript ограничены (я больше занимаюсь XHTML и CSS), но я застрял в тупике, так как этот сайт должен появиться через несколько дней, и я только заметил ошибку прошлой ночью.

Я использую диалоговое окно, чтобы открыть диалоговое окно, содержащее iframe - это динамически генерируемый шаблон из Expression Engine, который отлично загружает видео. Он выглядит красиво и отлично работает, а потом IE 6 и 7 испортили его.

В IE 6 & 7, когда вы используете 'close', он сбрасывает рамку, как и должно, но сохраняет содержимое в рабочем состоянии - чтобы вы могли слышать звук из видео, все еще воспроизводимого в фоновом режиме. Работает во всех других браузерах. Итак, я решил изменить «закрыть» на «уничтожить», но это полностью уронит предмет, и вы не сможете открыть его снова, не обновив окно.

Есть ли способ восстановить или сбросить элемент после его уничтожения?

Вот код:

$(function(){

$('#box').dialog({
 autoOpen: false,
 width: 600,
 buttons: {

  "close": function() { 
   $(this).dialog("destroy"); 
   } 
  }
});

// video Link
$('#box-1').click(function(){
  $('#box').dialog('open');
  return false;
});

});

Буду очень признателен за любые советы или идеи. Заранее спасибо

1 Ответ

0 голосов
/ 28 января 2011

Попробуйте detach () . У меня была похожая проблема, я создал хеш-таблицу javascript, я заполнил таблицу объектами, а затем .append (), когда мне это снова понадобилось:

myArray = new Array();
var thisTitle = $(this).data("videoTitle");
var titleOfDetachingElement = $("#content span:visible").attr("title");

// Before we detach the element we need to save it to the javascript array/hash table
myArray[titleOfDetachingElement] = $("#content span:visible"); //the one I want saved is the only visible one
$("#content span:visible").detach();

// Check to see if the video element is still in the DOM
// if it is just show it, if not reload it from the javascript array
if ($("#content span[title='" + thisTitle + "']").length) {
     $("#content span[title='" + thisTitle + "']").show();
}
else {
// We can just append it to the content section
// the inner articles are only used to catorigze the links on the page creation
     $("#content").append(myArray[thisTitle]);
}

Я уверен, что тебе придется немного поиграть, но это может быть начало.

...