我有一个带有多个标签的jQuery UI
对话框,有时候,我需要弹出其中一个标签作为单独的对话框(在标签式初始对话框的顶部),所以,我可以通过重新使用同样的对话?
(当然有一点运行时自定义,JavaScript
/ DOM HTML
操作,但最初定义的<div></div>
模板相同且HTML FORM
元素ID相同)
答案 0 :(得分:0)
这不是最佳解决方案,但可能是您应该做什么的方法。
<强> HTML:强>
<div id="dialog" title="Basic dialog">
<div class="dtabs">
<ul>
<li><a href="#tab1">First</a>
</li>
<li><a href="#tab2">Second</a>
</li>
<li><a href="#tab3">Third</a>
</li>
</ul>
<div id="tab1">
<p>First!</p>
</div>
<div id="tab2">
<p>Second!</p>
</div>
<div id="tab3">
<p>Third!</p>
</div>
</div>
</div>
<input value="Tab 1 on Dialog" type="button" alt="1" />
<input value="Tab 2 on Dialog" type="button" alt="2" />
<input value="Tab 3 on Dialog" type="button" alt="3" />
<强>使用Javascript:强>
$(function () {
// Dialog without autoOpen just to hide it from viewport
$('#dialog').dialog({
autoOpen: false
});
$('input').click(function () {
// Clone the dialog and append it to body
// Get "tab" number to know which tab should I set as active later
var d = $('#dialog').clone().appendTo('body'),
tab = $(this).attr('alt')-1;
// Assign "dialog" behaviour and remove it when I close it
d.dialog({
autoOpen: false,
close: function (e, ui) {
$(this).dialog('destroy').remove();
}
});
// Tabs inside my dialog has "tabs" behaviour by JQueryUI
d.find('.dtabs').tabs({
active: tab
});
// Open up!
d.dialog('open');
});
});
http://jsfiddle.net/franverona/k7cuH/
让我解释一下我做了什么:
dialog
行为。dialog
行为,没有autoOpen,并且有一个与close
事件相关联的函数,以便从DOM中删除它(以避免在我的HTML主体上出现多个对话框)。tabs
行为分配给我最近创建的对话框中的所有内容(看看我正在使用find
函数)并使用{{设置为活动标签正确的标签1}}之前检索的属性。我再说一遍:这不是一个最佳解决方案,但应该作为后期开发迭代的原型。
快乐的编码!