Рабочий пример jsfiddle (отсутствует jquery css / images)
Так что, если я могу предложить отказаться от кода, который вы дали, он выглядит как беспорядок, и вместо этого сделайте:
$(function(){
var urls = {
"hackernews" : "http://news.ycombinator.com",
"jsfiddle" : "http://jsfiddle.net"
};
var dialog = $("<div style='width:50%;height:50%;'>\
<iframe id='dialogFrame'\
src='#' frameborder='0'></iframe></div>");
dialog.dialog({
height: 220,
title: "Title",
width: 500,
modal: true,
autoOpen: false
});
$('#btn1, #btn2').click(
function(){
var urlIndex = $(this).attr('rel');
if(!urlIndex) return;
$('#dialogFrame', dialog).attr('src', urls[urlIndex]);
dialog.dialog('open');
}
);
$('#btnClose').click(
function(){
dialog.dialog('close');
}
);
});
HTML:
<input type="button" id="btn1" rel="jsfiddle" value="dialog1" />
<input type="button" id="btn2" rel="hackernews" value="dialog2" />
<input type="button" id="btnClose" value="Close">
Таким образом, вместо переключения между диалогами и изменения внутреннего HTML, мы сохраняем один диалог постоянно доступным, а когда он должен отображаться, мы устанавливаем URL-адрес iframe и показываем диалог.
Все URL-адреса хранятся в ассоциативном массиве, и обработчик события click проверяет атрибут rel нажатой кнопки, чтобы определить, какой URL-адрес должен отображаться.
Имеет смысл?
Вам, очевидно, нужно изменить URL-адреса и атрибуты HTML и dialo-свойств.