JQuery диалог изменения размера перед открытием - PullRequest
0 голосов
/ 14 ноября 2011

Я немного застрял, пытаясь заставить диалоговое окно jQuery UI автоматически изменять размеры, чтобы соответствовать его содержимому, сохраняя при этом максимальную высоту (чтобы диалог не вырастал "из окна"). Следующий код работает, однако диалоговое окно остается открытым в верхней части окна, а не по центру (там, где я хочу, чтобы оно появилось).

jQuery(".dialog").dialog({
    autoOpen: false,
    autoResize: true,
    height: "auto",
    hide: "fold",
    maxHeight: 500,
    open: function(event, ui) { jQuery(this).css({"max-height": 500, "overflow-y": "auto"}); },
    resizable: false,
    show: "fadeIn",
    width: 500
});

Функция open делает свое дело, однако делает это после открытия диалогового окна (на самом деле вы можете видеть, как оно изменяется на лету). Кто-нибудь может придумать, как перецентрировать его в элементе окна? Я пытался использовать .position (), но безрезультатно:

open: function(event, ui) {
    jQuery(this).css({"max-height": 500, "overflow-y": "auto"});
    setTimeout("jQuery(this).position(my: \"center\", at: \"center\", of: window)", 1000);
},

Любые другие предложения?

1 Ответ

0 голосов
/ 14 ноября 2011

Лучший трюк, который я придумал, - это предварительно рассчитать размер содержимого перед созданием диалога (добавив их в элемент DOM, класс css которого помещает их в отрицательную позицию по отношению к экрану), иизменение значения, которое я передаю для height, в зависимости от того, больше или меньше этот размер максимального размера, к которому я стремлюсь.

PS: я не знаю точно, как работает position, но вы можете попробовать:

setTimeout("jQuery(this).position({my: 'center', at: 'center', of: window})", 1000);
...