如何在jQuery中结合UI对话框和UI选项卡?

时间:2010-11-30 20:03:06

标签: jquery jquery-ui jquery-ui-tabs jquery-ui-dialog

所以我试图将Dialog与Tabs UI组件结合起来形成jQuery UI我几乎就在那里但是我似乎无法将对话框关闭按钮从Dialog UI标题栏移动到Tabs UI中。

我尝试将现有的Dialog UI标题栏关闭按钮移动到Tabs UI栏,但这会出现很多问题,鼠标悬停时按钮移动。我尝试在Tabs UI栏中创建带有关闭图标的按钮,但事实证明这很难将按钮放在最右侧,具有按钮的外观和感觉(上面有关闭图标)。

问题是标签页面栏只接受<li>,因为它是<ul>。如果我想在那里添加其他东西,我需要将它包含在<li>中,这会导致很多问题,或者我没有看到简单的解决方案。

任何人都可以帮助我吗?

这是我目前的代码:

<script type="text/javascript">
    $(document).ready(function() {
        $('#dialog-movie-info').dialog({
            draggable: false,
            resizable: false,
            show: 'fade',
            hide: 'fade',
            modal: true,
            height: 370,
            width: 650,
            position: ['center', 35],
            open: function() {
                //$('.ui-dialog-titlebar-close').appendTo('#ui-tab-dialog-close');
                $(this).parent().children('.ui-dialog-titlebar').remove();
                $('#tabs-movie').tabs();
            },
            close: function() {
                $(this).find('#tab-info').children().remove();
                $(this).dialog('destroy');
            }
        });
    }
</script>
<div id="dialog-movie-info" class="ui-helper-hidden">
  <div id="tabs-movie">
    <ul>
      <li><a href="#tab-info"><img src="template/images/icon-block.png" alt="" />Information</a></li>
      <li><a href="#tab-cast"><img src="template/images/icon-block.png" alt="" />Cast List</a></li>
    </ul>
    <div id="tab-info">
      <em>Info tab...</em>
    </div>
    <div id="tab-cast">
      <em>Cast tab...</em>
    </div>
  </div>
</div>

1 个答案:

答案 0 :(得分:7)

我找到了一个对我有用的解决方案:

<强>使用Javascript:

$(document).ready(function() {
    $('#tabs-movie').tabs();

    $('#dialog-movie-info').dialog({
        closeOnEscape: false,
        draggable: false,
        resizable: false,
        autoOpen: false,
        open: function() {
            $(this).find('.ui-dialog-titlebar-close').blur();
        }
    }).parent().find('.ui-dialog-titlebar-close').prependTo('#tabs-movie').closest('.ui-dialog').children('.ui-dialog-titlebar').remove();
});

<强> HTML:

<div id="dialog-movie-info">
  <div id="tabs-movie">
    <ul>
      <li><a href="#tab-info"><img src="template/images/icon-block.png" alt="" />Information</a></li>
      <li><a href="#tab-cast"><img src="template/images/icon-block.png" alt="" />Cast List</a></li>
    </ul>
    <div id="tab-info"></div>
    <div id="tab-cast">
      <em>Cast Tab!</em>
    </div>
  </div>
</div>

<强> CSS:

#tabs-movie {
    border: none;
    padding: 0;
}