Как объединить UI Dialog с вкладками UI в jQuery? - PullRequest
4 голосов
/ 30 ноября 2010

Поэтому я пытаюсь объединить диалог с компонентами пользовательского интерфейса вкладок из jQuery UI. Я почти на месте, но я не могу переместить кнопку закрытия диалога из заголовка диалогового окна Dialogar в пользовательский интерфейс Tabs.

Я попытался переместить существующую кнопку закрытия заголовка диалогового окна диалогового окна на панель вкладок пользовательского интерфейса, но это вызвало множество проблем, и кнопка переместилась при наведении курсора мыши. Я пытался создать кнопки со значком закрытия в панели интерфейса вкладок, но оказалось, что трудно расположить кнопку в крайнем правом углу, с внешним видом и ощущением кнопки (со значком закрытия на ней).

Проблема в том, что панель интерфейса вкладок принимает только <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 Ответ

7 голосов
/ 01 декабря 2010

Я нашел решение, которое отлично работает для меня:

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;
}
...