2015-02-17 2 views
0

Hy,window.resize событие в диалоговом окне jquery open событие

на моем сайте Я использую диалог jquery и jquery. Объявляю диалог как

$('#' + e).dialog({ 
    autoOpen: false, 
    modal: true, 
    ..., 
    close: function (type, data) { 
     $('#' + e).dialog("destroy"); 
    }, 
    open: function (type, data) { 
     $(window).resize(function (sender) { 
      if ($(window).width() > 850) { 
       if ($('#' + e).dialog("isOpen")) { 
        $('#' + e).dialog("close"); 
       } 
      } else { 
       $('#' + e).dialog("option", { 
        position: { 
         my: 'center center', 
         at: 'center center', 
         collision: 'fit' 
        }, 
        width: $(window).width() * 0.8, 
        height: $(window).height() * 0.8 
       }); 
      } 
      return false; 
     }); 
    } 
}); 

Цель состоит в том, что диалог закрывается, если ширина окна больше 850px. Диалог закрыт, если ширина достигнута, но событие изменения размера все еще работает.

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

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

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

С наилучшими пожеланиями WaZZkeSS

+0

Я раньше не использовал этот конкретный плагин, но вместо того, чтобы пытаться поговорить с диалогом через настройки, вы могли бы вместо этого нажать на кнопку закрытия (x), как если бы (parseInt (window.innerWidth, 10)> 850)) {$ (". ui-dialog-titlebar-close"). trigger ("click") –

+0

Hy steven и thx для вашего ответа. Я скрываю заголовок с помощью $ (this) .siblings ('div.ui-dialog-titlebar'). Remove(); – WaZZkeSS

+0

и он должен быть закрыт (также событие изменения размера). если ширина достигнута. – WaZZkeSS

ответ

0

В вашей $(window).resize(function (sender) { функции вам необходимо проверить, диалог открыт или нет. Если он закрыт return false;

+0

Hy Alexey и thx для вашего ответа. В приведенном выше коде я проверяю, открыт ли диалог или нет, и закройте диалог, если он открыт, а после условия else он возвращает false. Но событие изменения размера окна запускается снова, возникает ошибка «jquery не может вызвать диалог методов перед инициализацией», потому что диалог удален. – WaZZkeSS

+0

'диалог (« isOpen »)' должен быть доступен для вас. Вы можете назвать это '$ (window) .resize (function (sender) {if ($ ('#' + e) ​​.dialog (" isOpen ")) {return false;} ....'? –

+0

Я получаю сообщение об ошибке: 0x800a139e - Laufzeitfehler в JavaScript: не удается вызвать методы в диалоговом окне перед инициализацией, попытался вызвать метод isOpen'', потому что диалог был уничтожен, а событие изменения размера все еще срабатывает. – WaZZkeSS

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