我有一个带有 TabContainer
控件的页面(来自 Ajax Control Toolkit),我根据当前选择的选项卡切换页面上某些元素的可见性。我一直在 OnClientActiveTabChanged
的事件处理程序中执行此操作(工作正常),但我发现它在回发后使页面处于错误状态。我尝试向 document.ready
事件处理程序添加一些代码来获取索引,但是当我执行以下操作时:
$(document).ready(function () {
var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
// Do some stuff with the index
});
...我在 .control
属性上得到一个空引用异常。有没有办法为 TabContainer
Hook 客户端“就绪”事件?
我不熟悉普通 DOM 元素的事件生命周期(似乎应该有一个通用的 onload 事件,但我没有看到)。如果没有可以轻松处理的事件,似乎可以添加一个带有 UpdateMode=Conditional 的 UpdatePanel
和一个指向带有 onclick 事件处理程序的隐藏按钮的 AsyncPostBackTrigger获取事件选项卡索引 – 但对于我希望 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 的就绪事件“有点早”并且 TabContainer 尚未初始化,而客户端 ASP.Net 的 pageLoad 已经足够晚并且 TabContainer 已经初始化。
关于AjaxControlToolkit TabContainer 准备就绪时的 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457822/