类似浏览器的选项卡 - Jquery UI 选项卡定位

发布于 2024-12-05 18:40:04 字数 3391 浏览 3 评论 0原文

我正在研究 JQuery UI 选项卡添加/删除功能。

我的 html 是

<div id="dialog" title="Tab data">
    <form>
        <fieldset class="ui-helper-reset">
            <label for="tab_title">Title</label>

            <input type="text" name="tab_title" id="tab_title" value="" class="ui-widget-content ui-corner-all" />
            <label for="tab_content">Content</label>
            <textarea name="tab_content" id="tab_content" class="ui-widget-content ui-corner-all"></textarea>
        </fieldset>
    </form>
</div>

<button id="add_tab">Add Tab</button>

<div id="tabs">
    <ul>

    </ul>

</div>

我的 JQuery

$(function() {
        var $tab_title_input = $( "#tab_title"),
            $tab_content_input = $( "#tab_content" );
        var tab_counter = 2;

        // tabs init with a custom tab template and an "add" callback filling in the content
        var $tabs = $( "#tabs").tabs({
            tabTemplate: "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>",
            add: function( event, ui ) {
                var tab_content = $tab_content_input.val() || "Tab " + tab_counter + " content.";
                $( ui.panel ).append( "<p>" + tab_content + "</p>" );
            }
        });

        // modal dialog init: custom buttons and a "close" callback reseting the form inside
        var $dialog = $( "#dialog" ).dialog({
            autoOpen: true,
            modal: true,
            buttons: {
                Add: function() {
                    addTab();
                    $( this ).dialog( "close" );
                },
                Cancel: function() {
                    $( this ).dialog( "close" );
                }
            },
            open: function() {
                $tab_title_input.focus();
            },
            close: function() {
                $form[ 0 ].reset();
            }
        });

        // addTab form: calls addTab function on submit and closes the dialog
        var $form = $( "form", $dialog ).submit(function() {
            addTab();
            $dialog.dialog( "close" );
            return false;
        });

        // actual addTab function: adds new tab using the title input from the form above
        function addTab() {
            var tab_title = $tab_title_input.val() || "Tab " + tab_counter;
            $tabs.tabs( "add", "#tabs-" + tab_counter, tab_title );
            tab_counter++;
        }

        // addTab button: just opens the dialog
        $( "#add_tab" )
            .button()
            .click(function() {
                $dialog.dialog( "open" );
            });

        // close icon: removing the tab on click

        $( "#tabs span.ui-icon-close" ).live( "click", function() {
            var index = $( "li", $tabs ).index( $( this ).parent() );
            $tabs.tabs( "remove", index );
        });
    });

我想要的是自动切换到新创建的选项卡还将添加“新选项卡”按钮放置在选项卡旁边,就像我们现在在浏览器中一样。

我尝试在选项卡

    内插入“添加选项卡”按钮,但是选项卡无法正常工作。

任何帮助将不胜感激!

更新

这是可行的解决方案:http://jsfiddle.net/SjW4f/20/< /a>

I'm working on JQuery UI tab Add/Remove function.

My html is

<div id="dialog" title="Tab data">
    <form>
        <fieldset class="ui-helper-reset">
            <label for="tab_title">Title</label>

            <input type="text" name="tab_title" id="tab_title" value="" class="ui-widget-content ui-corner-all" />
            <label for="tab_content">Content</label>
            <textarea name="tab_content" id="tab_content" class="ui-widget-content ui-corner-all"></textarea>
        </fieldset>
    </form>
</div>

<button id="add_tab">Add Tab</button>

<div id="tabs">
    <ul>

    </ul>

</div>

My JQuery is

$(function() {
        var $tab_title_input = $( "#tab_title"),
            $tab_content_input = $( "#tab_content" );
        var tab_counter = 2;

        // tabs init with a custom tab template and an "add" callback filling in the content
        var $tabs = $( "#tabs").tabs({
            tabTemplate: "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>",
            add: function( event, ui ) {
                var tab_content = $tab_content_input.val() || "Tab " + tab_counter + " content.";
                $( ui.panel ).append( "<p>" + tab_content + "</p>" );
            }
        });

        // modal dialog init: custom buttons and a "close" callback reseting the form inside
        var $dialog = $( "#dialog" ).dialog({
            autoOpen: true,
            modal: true,
            buttons: {
                Add: function() {
                    addTab();
                    $( this ).dialog( "close" );
                },
                Cancel: function() {
                    $( this ).dialog( "close" );
                }
            },
            open: function() {
                $tab_title_input.focus();
            },
            close: function() {
                $form[ 0 ].reset();
            }
        });

        // addTab form: calls addTab function on submit and closes the dialog
        var $form = $( "form", $dialog ).submit(function() {
            addTab();
            $dialog.dialog( "close" );
            return false;
        });

        // actual addTab function: adds new tab using the title input from the form above
        function addTab() {
            var tab_title = $tab_title_input.val() || "Tab " + tab_counter;
            $tabs.tabs( "add", "#tabs-" + tab_counter, tab_title );
            tab_counter++;
        }

        // addTab button: just opens the dialog
        $( "#add_tab" )
            .button()
            .click(function() {
                $dialog.dialog( "open" );
            });

        // close icon: removing the tab on click

        $( "#tabs span.ui-icon-close" ).live( "click", function() {
            var index = $( "li", $tabs ).index( $( this ).parent() );
            $tabs.tabs( "remove", index );
        });
    });

What I want is to switch to newly created tab Automatically & also position add "new tab" button next to tabs like we have in browsers these days.

I tried inserting "Add tab" button inside tabs <ul> but then, tab doesn't work properly.

Any Help would be appreciated !

UPDATE

Here is working solution : http://jsfiddle.net/SjW4f/20/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酷到爆炸 2024-12-12 18:40:04

如下: http://jsfiddle.net/SjW4f/21/

您将需要工作在 add 事件上对选项卡进行重新排序以使 add 选项卡成为最新选项卡。

更新至工作版本

Here is it: http://jsfiddle.net/SjW4f/21/

You will need to work a little with reordering tabs on add event to make add tab the lastest.

UPDATED TO WORKING VERSION

清风挽心 2024-12-12 18:40:04

http://jsfiddle.net/SjW4f/4/
我改变了两件事。添加选项卡后,我添加了一个“选择”方法。我还将您的现场活动更改为代表活动。

http://jsfiddle.net/SjW4f/4/
I changed two things. I added a 'select' method after you add the tab. I also changed your live event to a delegate event.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文