JQuery选项卡,无法更改激活选项卡

时间:2014-03-28 11:34:32

标签: javascript jquery html5 jquery-ui tabs

我是新来的,没有为我的问题找到解决方案。 我在网上搜索并尝试了大量的解决方案,但他们没有工作。

我使用带有可关闭功能的Jquery Tabs(http://jsfiddle.net/42er3/9/

现在我想激活最新创建的Tab。这不起作用^^

这是我的代码:

$(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");
        }
    });
});

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码以编程方式激活标签

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

我已经更新了你的小提琴中的addTab()方法,如下所示:

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

由于标签索引从0开始而不是1,我不得不从tabCounter中减去1以获得刚刚添加的标签的索引。

请参阅here了解演示