簡體   English   中英

JQuery 選項卡,無法更改激活選項卡

[英]JQuery Tabs , can´t change activate tab

我是新來的,沒有找到解決我問題的方法。 我在網上搜索並嘗試了大量解決方案,但都沒有奏效。

我使用具有可關閉功能的 Jquery Tabs( http://jsfiddle.net/42er3/9/

現在我想激活最新創建的選項卡。 這不起作用^^

這是我的代碼:

$(function () {
    var tabTitle = $("#tab_title"),
        tabContent = $("#tab_content"),
        tabTemplate = "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close' role='presentation'>Remove Tab</span></li>",
        tabCounter = 1;
    var tabs = $("#tabs").tabs();

    // modal dialog init: custom buttons and a "close" callback resetting the form inside
    var dialog = $("#dialog").dialog({
        autoOpen: false,
        modal: true,
        buttons: {
            Send: function () {
                addTab();
                $(this).dialog("close");
            },
            Cancel: function () {
                $(this).dialog("close");
            }
        },
        close: function () {
            form[0].reset();
        }
    });
    // addTab form: calls addTab function on submit and closes the dialog
    var form = dialog.find("form").submit(function (event) {
        addTab();
        dialog.dialog("close");
        event.preventDefault();
    });

    // actual addTab function: adds new tab using the input from the form above
    function addTab() {
        var label = tabTitle.val() || "Tab " + tabCounter,
            id = tabTitle.val(),
            li = $(tabTemplate.replace(/#\{href\}/g, "#" + id).replace(/#\{label\}/g, label)),
            tabContentHtml = tabContent.val() || "Tab " + tabCounter + " content.";

        tabs.find(".ui-tabs-nav").append(li);

        tabs.append("<div id='" + id + "' class='rel'><p>" + tabContentHtml + "</p><hr /><div id='writebox'><form name='send' id ='sent'><textarea name ='msg' class='boxsizingBorder'></textarea><input type='submit' name='" + id + "' /></form></div></div>");

        //after added the tab, active it
        tabs.tabs({
            active: tabCounter
        }); // <---------------------------Here it is

        //alert(panelId+"-"+tabCounter);
        tabCounter++;
        tabs.tabs("refresh");

    }
    // addTab button: just opens the dialog
    $("#add_tab")
        .button()
        .click(function () {
            dialog.dialog("open");
        });
    // close icon: removing the tab on click
    tabs.delegate("span.ui-icon-close", "click", function () {
        var panelId = $(this).closest("li").remove().attr("aria-controls");
        $("#" + panelId).remove();
        tabs.tabs("refresh");
    });
    tabs.bind("keyup", function (event) {
        if (event.altKey && event.keyCode === $.ui.keyCode.BACKSPACE) {
            var panelId = tabs.find(".ui-tabs-active").remove().attr("aria-controls");
            $("#" + panelId).remove();
            tabs.tabs("refresh");
        }
    });
});

您可以使用以下代碼以編程方式使選項卡處於活動狀態

$( "#tabs" ).tabs( "option", "active", 2 );

我已經更新了你的 Fiddle 中的 addTab() 方法如下:

function addTab() {
    ...
    tabs.tabs("refresh");
    tabs.tabs( "option", "active", tabCounter-1 );
    tabCounter++;
}

由於選項卡索引從 0 而不是 1 開始,我必須從tabCounter減去 1 才能獲得剛剛添加的選項卡的索引。

在這里查看演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM