我有一个ajax手风琴,我想在页面加载后5秒钟关闭。我试图用javascript做这个,但没有运气。我正在尝试将SelectedIndex的折叠控制更改为折叠手风琴的值。 SelectedIndex = 0是打开的(默认),我试图在javascript计时器用完后将其更改为1。
$(document).ready(function () {
// close the accordion after 5 seconds
setTimeout(function () { document.getElementById('MainContent_Accordion1').SelectedIndex = 1; }, 5000); });
我从控制台上没有收到任何关于java的错误,但手风琴没有关闭。有什么想法吗?
答案 0 :(得分:1)
我终于找到了有用的东西。
setTimeout(function () {
var behavior = $get("<%Accordion1.ClientID%>").AccordionBehavior;
behavior.set_SelectedIndex(1);}, 5000);
这个解决方案做了我想要的,因为它的行为就像用户点击了手风琴按钮一样。我发现的其他解决方案基本上都是瞬间隐藏,而不是手风琴崩溃的动画。通过将索引设置为高于最大数量的值,它实际上折叠了手风琴。在我的情况下,我只有一个窗格,因此将索引从0设置为1将起到作用。
答案 1 :(得分:0)
首先,Accordion
小组的SelectedIndex
属性并未声明Accordion面板是打开还是关闭。它指示当前显示的窗格中有哪个窗格。因此,它可能是0, 1, 2 ... n
(其中n表示窗格数 - 1)。
来自Ajax Control Toolkit website的SelectedIndex
属性的定义如下
SelectedIndex
- 最初可见的AccordionPane
并且,此值存储在隐藏字段中,其名称包含“ _AccordionExtender_ClientState ”。
提示强>
好的,回到解决你的问题。首先,您需要考虑使用HTML而不是Accordion控件的服务器端属性,因为您将使用JavaScript
在客户端操作它。 Accordion
控件在客户端被转换为一堆DIV
个元素,其CSS
类名称如accordionHeader
和accordionHeaderSelected
(这可能因您是否'而异)在设计期间分配了自定义类)。请参阅这些图像并关注突出显示的区域。
展开窗格时
展开窗格时,它的DIV包含class = "accordionHeaderSelected"
。并且,隐藏字段的值是所选窗格的索引(在这种情况下是第一窗格,即0)。另请注意所选窗格的内容DIV的样式属性。
折叠窗格时
折叠窗格时,DIV包含class = "accordionHeader"
。并且,隐藏字段的值始终为-1。另请注意所选窗格的内容DIV的样式属性。
因此,在JavaScript
中,请使用这些值来识别当前展开的DIV。然后按照以下步骤操作。
将元素类更改为class = "accordionHeader"
找到与所选窗格相关的内容DIV,并通过设置内容DIV的以下样式将其关闭。
style ='height:0px;溢出:隐藏; display:none;不透明度:0;'
您还应该使隐藏字段值= -1
希望这对你有意义。如果您需要进一步解释,请告诉我。