Asp.net Jquery选项卡不会从索引中选择

Asp.net Jquery选项卡不会从索引中选择,asp.net,jquery,jquery-ui,Asp.net,Jquery,Jquery Ui,我正在使用带有updatepanels和jQueryUI选项卡的ASP.NET页面。然而,我有一个问题。当我点击一个按钮时,它应该设置一个隐藏字段的值,当页面发回时,它将选择新选项卡 因此,在document onload中,将选项卡设置为隐藏字段的初始化值: $(function() { var loadTab = $("#<%= hidTabSelected.ClientID %>").val(); $('#dvJqTabs').tabs

我正在使用带有updatepanels和jQueryUI选项卡的ASP.NET页面。然而,我有一个问题。当我点击一个按钮时,它应该设置一个隐藏字段的值,当页面发回时,它将选择新选项卡

因此,在document onload中,将选项卡设置为隐藏字段的初始化值:

$(function()
    {
        var loadTab = $("#<%= hidTabSelected.ClientID %>").val();

        $('#dvJqTabs').tabs( 
            { selected: loadTab ,   
              select: saveTab                    
            }
        )
    });
现在,当我想更改选项卡时,在ASP.NET页面按钮中单击handler,我会进行一些处理,最后将hidTabSelected=1设置为0。当页面因为我在UpdatePanels中而发布时,我将无法获得文档就绪事件。因此,我截取pageLoad并再次尝试设置选项卡:

function pageLoad()
    {
        alert('pageLoad()');
        var loadTab = $("#<%= hidTabSelected.ClientID %>").val();
        $('#dvJqTabs').tabs( { selected: loadTab } );
    }

该选项卡未被选中?如果我进入firebug的控制台并检查$hidTabSelected.val,我得到1。那么为什么第二个选项卡不显示呢?

请记住,在回调期间,在初始加载和回发加载时都会调用页面加载。我认为您的问题在于元素已经是一个选项卡,所以您只需要在回调之后调用它的一个方法,如下所示:

function pageLoad()
    {
       var loadTab = $("#<%= hidTabSelected.ClientID %>").val();
        $('#dvJqTabs').tabs( "select", loadTab } );
    }

如果将字符串传递给,它将尝试将其与选项卡锚的哈希匹配。从文档中:

选择一个选项卡,就像单击了它一样。第二个参数是要选择的选项卡的从零开始的索引,或者选项卡与选项卡的href片段标识符关联的面板的id选择器,例如哈希,指向面板的id

相反,您希望按索引选择,因此它不需要是字符串。对于该用途,如下所示:

function pageLoad()
{
    var loadTab = parseInt($("#<%= hidTabSelected.ClientID %>").val(), 10);
    $('#dvJqTabs').tabs( { selected: loadTab } );
}

嗨,我试过这个,但是没有效果。我想知道当部分页面刷新发生时,是否因为updatepanel而失败?我使用onclientclick设置了一个简单的ASP.NET按钮来测试函数:$'dvJqTabs'.tabs{select:1};页面刷新后,我可以看到返回到选项卡的要点,但第一个选项卡再次被选中……这可能与UpdatePanel回调中的DOM更新有关。我将研究使用ScriptManager.RegisterClientScriptBlock方法在回发事件处理程序期间注册JavaScript。