Вам нужно указать height: 'auto', чтобы настроить диалог на основе его содержимого.
.dialog({
height: 'auto',
});
@ jon3laze Значением по умолчанию для «position» является «center», поэтому нет необходимости устанавливать его в открытой функции обратного вызова.
@ eagerMoose Нет необходимости вызывать
$("#dialog").dialog('open');
потому что у диалогов есть опция autoOpen, которая по умолчанию имеет значение true, и диалог открывается сразу после создания экземпляра. Второй вызов .dialog ('open') игнорируется.
РЕДАКТИРОВАТЬ: поскольку загрузка асинхронная, диалог, вероятно, инициализируется до загрузки содержимого. Попробуйте инициализировать диалог в завершении загрузки.
$(document).ready(function(){
$(a).click(function(){
$("#dialog").load($(this).attr('href'), function(){
$(this).dialog({
modal: true,
width: 400
});
});
});
});