Как я могу расположить свой диалог jQuery в центр?
Я пробовал следующий код, но он только позиционирует диалоги в левом верхнем углу по центру, и это делает элемент выровненным вправо. Как я могу центрировать диалог в реальный центр, который подсчитывает ширину элементов, так что центральная линия сократит диалог до 50% 50% половин?
$('.selector').dialog({ position: 'center' });
21 ответ:
Я уверен, что вам не нужно устанавливать позицию:
$("#dialog").dialog();
Я посмотрел на статью, а также проверил, что она говорит на официальный сайт jquery-ui о позиционировании диалога : и в нем обсуждались 2 состояния: инициализация и после инициализации.
примеры кода - (взяты из jQuery UI 2009-12-03)
инициализировать диалог с помощью указан параметр позиция.
$('.selector').dialog({ position: 'top' });
получить или установить параметр позиции, после инициализации.
//getter var position = $('.selector').dialog('option', 'position'); //setter $('.selector').dialog('option', 'position', 'top');
Я думаю, что если бы вы удалили атрибут position, вы бы нашли его центры сами по себе, иначе попробуйте второй параметр setter, где вы определяете 3 элемента "option" "position" и "center".
последний пользовательский интерфейс jQuery имеет компонент позиции:
$("#myDialog").position({ my: "center", at: "center", of: window });
Doc:http://jqueryui.com/demos/position/
Получить:http://jqueryui.com/download
поскольку диалогу нужна позиция, вам нужно включить позицию js
<script src="jquery.ui.position.js"></script>
поэтому, если кто-то попадает на эту страницу, как я, или когда я забываю через 15 минут, я использую jQueryUI dialog version 1.10.1 и jquery 1.9.1 с ie8 в iframe(бла), и ему нужно в пределах указанного или он не работает, т. е.
position: { my: "center bottom", at: "center top", of: $("#submitbutton"), within: $(".content") }
спасибо @vm370 за указание мне в правильном направлении.
open: function () { var win = $(window); $(this).parent().css({ position: 'absolute', left: (win.width() - $(this).parent().outerWidth()) / 2, top: (win.height() - $(this).parent().outerHeight()) / 2 }); }
чтобы исправить положение, я использую:
open : function() { var t = $(this).parent(), w = window; t.offset({ top: (w.height() / 2) - (t.height() / 2), left: (w.width() / 2) - (t.width() / 2) }); }
попробуйте это....
$(window).resize(function() { $("#dialog").dialog("option", "position", "center"); });
Я получаю лучшие результаты, чтобы поместить диалог jQuery в центр окна браузера с помощью:
position: { my: "center bottom", at: "center center", of: window },
вероятно, есть более точный способ позиционировать его с опцией"используя " как описано в документации по адресу http://api.jqueryui.com/position/ но я спешу...
Я должен вызвать функцию
dialog()
дважды для размещения диалогового окна (jQuery v1.11.2 / jQueryUI v1.10.4).$("#myDialog").dialog({ /* initial dialog parameters */ }).dialog({ position: { my: "center center", at: "center center", of: window } });
следующий параметр позиции работал для меня
position: { my: "right bottom", at: "center center", of: window },
удачи!
Jquery UI 1.9.2
, jquery и более поздние версии не поддерживают IE8Я нашел два решения для этого.
откат
jquery UI 1.7.2
для поддержки IE8,попробуйте этот код
Jquery UI 1.9.2
position: {my: "center", at: "center", of: $("body"),within: $("body") }
согласно следующему обсуждению, проблема может быть связана с меньшей совместимостью IE в новых версиях jQuery, возврат обратно к 1.7.2, похоже, решает проблему, которая возникает только в IE8. http://forum.jquery.com/topic/jquery-ui-dialog-positioning-not-working-in-ie-8
еще одна вещь, которая может дать вам ад с jQuery Dialog positioning, особенно для документов больше, чем порт просмотра браузера - вы должны добавить объявление
<!DOCTYPE html>
в верхней части документа.
без него jquery имеет тенденцию помещать диалоговое окно в нижней части страницы, и при попытке перетащить его могут возникать ошибки.
Если вы используете отдельные файлы jquery или пользовательскую загрузку jquery в любом случае, убедитесь, что у вас также есть jquery.пользовательский интерфейс.позиция.js добавлен на вашу страницу.
вы сталкиваетесь с этим только в IE? Если это так, попробуйте добавить это в первую строку тега HEAD вашей страницы:
<meta http-equiv="X-UA-Compatible" content="IE=7" />
Я думал, что все проблемы совместимости были исправлены в более поздних jQueries, но я столкнулся с этим сегодня.
попробуйте это для старых версий и тех, кто не хочет использовать позицию:
$("#dialog-div-id").dialog({position: ['center', 'top'],....
вам также необходимо выполнить ручное повторное центрирование при использовании jQuery ui на мобильных устройствах-диалоговое окно вручную позиционируется с помощью свойства css "left & top". если пользователь переключает ориентацию, позиционирование больше не центрируется и должно быть адаптировано / повторно центрировано впоследствии.
для среды Win7/IE9 просто установите в свой css-файл:
.ui-dialog { top: 100px; left: 350px !important; }
у меня была проблема с этим и я, наконец, понял это. До сегодняшнего дня я использовал очень старую версию jQuery, версия 1.8.2.
везде, где я использовал
dialog
Я инициализировал его с помощью следующей опции позиции:$.dialog({ position: "center" });
однако я обнаружил, что удаление
position: "center"
или замена его правильным синтаксисом не сделала трюк, например:$.dialog({ position: { my: "center", at: "center", of: window } });
хотя выше верно, я также использовал
option
установить как центр, когда я загрузил страницу, по-старому, вот так:// The wrong old way of keeping a dialog centered passwordDialogInstance.dialog("option", "position", "center");
это вызывало все мои диалоговые окна, чтобы придерживаться в левом верхнем углу окна просмотра.
мне пришлось заменить все экземпляры этого с правильным новым синтаксисом ниже:
passwordDialogInstance.dialog( "option", "position", { my: "center", at: "center", of: window } );