Вот ваша функция:
function createDialog(title, content)
{
return $('<div></div>')
.html(content || 'Defualt content.')
.dialog({
height : 140,
modal : true,
autoOpen : false,
title : title || 'Defualt title'
});
}
Вы можете вызвать функцию следующим образом:
$dialog = createDialog('Basic Dialog', 'This dialog will show every time!');
, а затем открыть его с $dialog.dialog('open')
, как у вас есть, или вы можете открыть его сразу:
createDialog('Basic Dialog', 'This dialog will show every time!').dialog('open');
Как указано в @LordZardeck, вышеупомянутое решение приведет к слишком большому количеству нечетких узлов DOM. Вам лучше использовать один и тот же диалог (можно ли предположить, что вам понадобится только один диалог сразу? Надеюсь, что так!).
Если вы хотите сохранить ваш DOM немного разумнее, попробуйте следующее:
var createDialog = (function($)
{
var $dialog = $('<div></div>').dialog({
height : 140,
modal : true,
autoOpen : false
}),
$content = $dialog.find('.dialog-content');
return function (title, content)
{
$content.html(content || 'Default content.');
return $dialog.dialog('option', {
title : title || 'Defualt title'
});
}
})
(jQuery);
Использование такой же, как с выше.
Спасибо! Примите это после (в настоящее время) 6 минут ожидания. – Muzz
Должен сказать, это действительно гениальное решение! Реквизит! И если вы не возражаете, я буду модифицировать свой код, чтобы использовать его! – LordZardeck