ユーザーがリンクをクリックしたときに、Simple Modal を使用してモーダル ボックスを作成しています。このモーダル ボックスの内部には、jquery ui タブを備えた div があります。ただし、モーダルが開かれる前に、それらのタブのコンテンツが変更されます。ただし、私の jsFiddle の例では、その部分は表示されません。
問題 リンクを初めてクリックしてモーダルを開くと、モーダル ボックスが表示され、タブが正しく機能します。
モーダルを閉じて、再度開きます。(ユーザーは同じリンクをクリックできます)。
タブが機能しません。
モーダルを開くために関数が呼び出されるたびに、インスタンスを破棄して再作成しようとすると、次のようになります。
Chrome Dev Tools がUncaught TypeError: Cannot read property 'hash' of undefined を報告します。
$(document).ready(function() {
$('#tabs').tabs();
});
function getDetails(atag) {
$('#hotelDetails').modal({
minHeight: 100,
onOpen: function (dialog) {
dialog.overlay.fadeIn('fast', function () {
dialog.container.slideDown('fast', function () {
dialog.data.fadeIn('fast');
$('#tabs').tabs();
$("#tabs").tabs("option", "active", $("#" + atag).index()-1);
});
});
},
onClose: function(dialog) {
dialog.data.fadeOut('fast', function () {
dialog.container.slideUp('fast', function () {
dialog.overlay.fadeOut('fast', function () {
$.modal.close(); // must call this!
$('#tabs').tabs("destroy");
});
});
});
},
zIndex: 3000
});
}
(例http://jsfiddle.net/R44Yh/1/を参照)
コンテンツを変更するために必要だと思われる REFRESH 呼び出しを実行しようとしましたが、エラーは報告されませんが、タブも変更されません。
$(document).ready(function() {
$('#tabs').tabs();
});
function getDetails(atag) {
$('#hotelDetails').modal({
minHeight: 100,
onOpen: function (dialog) {
dialog.overlay.fadeIn('fast', function () {
dialog.container.slideDown('fast', function () {
dialog.data.fadeIn('fast');
$('#tabs').tabs( "refresh" );
$("#tabs").tabs("option", "active", $("#" + atag).index()-1);
});
});
},
onClose: function(dialog) {
dialog.data.fadeOut('fast', function () {
dialog.container.slideUp('fast', function () {
dialog.overlay.fadeOut('fast', function () {
$.modal.close(); // must call this!
});
});
});
},
zIndex: 3000
});
}