我有一个带有TabContainer控件的页面(来自Ajax控件工具包),并且我根据当前选定的选项卡来切换页面上某些元素的可见性。我一直在OnClientActiveTabChanged的事件处理程序中进行此操作(工作正常),但发现回发后它会使页面处于错误状态。我尝试将一些代码添加到document.ready事件处理程序中以获取索引,但是当我执行以下操作时:

$(document).ready(function () {
    var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
    // Do some stuff with the index
});

...我在.control属性上得到了一个空引用异常。有没有办法为TabContainer挂接客户端“就绪”事件?

我不熟悉带有普通DOM元素的事件生命周期(似乎应该有一个常规的onload事件,但我看不到)。如果没有容易处理的事件,则似乎可以使用UpdateMode = Conditional添加UpdatePanel和AsyncPostBackTrigger来指向一个隐藏按钮,该按钮带有一个onclick事件处理程序,该事件处理程序将获取 Activity 标签索引-对于我希望DOM已经公开的某些东西,这似乎是很多动人的事情。

最佳答案

太晚了,无法提供帮助,但是我遇到了同样的问题,并且找到了解决方法。
更改您的代码

$(document).ready(function () {
    var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
    // Do some stuff with the index
});


function pageLoad() {
    var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
    // Do some stuff with the index
};

此处说明:
http://encosia.com/document-ready-and-pageload-are-not-the-same/

基本上,jQuery的ready事件“有点早”,并且TabContainer尚未初始化,而客户端ASP.Net的pageLoad足够晚,并且TabContainer到那时已初始化。

10-08 00:21