用javascript关闭ajax手风琴

时间:2014-10-12 22:00:25

标签: javascript jquery asp.net ajax

我有一个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的错误,但手风琴没有关闭。有什么想法吗?

2 个答案:

答案 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 websiteSelectedIndex属性的定义如下

SelectedIndex - 最初可见的AccordionPane

并且,此值存储在隐藏字段中,其名称包含“ _AccordionExtender_ClientState ”。

提示

好的,回到解决你的问题。首先,您需要考虑使用HTML而不是Accordion控件的服务器端属性,因为您将使用JavaScript在客户端操作它。 Accordion控件在客户端被转换为一堆DIV个元素,其CSS类名称如accordionHeaderaccordionHeaderSelected(这可能因您是否'而异)在设计期间分配了自定义类)。请参阅这些图像并关注突出显示的区域。

展开窗格时 enter image description here

展开窗格时,它的DIV包含class = "accordionHeaderSelected"。并且,隐藏字段的值是所选窗格的索引(在这种情况下是第一窗格,即0)。另请注意所选窗格的内容DIV的样式属性。

折叠窗格时 enter image description here

折叠窗格时,DIV包含class = "accordionHeader"。并且,隐藏字段的值始终为-1。另请注意所选窗格的内容DIV的样式属性。

因此,在JavaScript中,请使用这些值来识别当前展开的DIV。然后按照以下步骤操作。

  1. 将元素类更改为class = "accordionHeader"

  2. 找到与所选窗格相关的内容DIV,并通过设置内容DIV的以下样式将其关闭。

    style ='height:0px;溢出:隐藏; display:none;不透明度:0;'

  3. 您还应该使隐藏字段值= -1

  4. 希望这对你有意义。如果您需要进一步解释,请告诉我。