在页面重新加载时,打开特定的手风琴面板

时间:2010-10-05 19:16:25

标签: jquery jquery-ui accordion reload jquery-ui-accordion

从手风琴小组中,我发布一些数据,然后重新加载页面。我希望当前面板的重新加载能够打开并聚焦在屏幕上,而不是重新打开第一个面板并将我移回屏幕顶部。我知道我想打开哪个面板,所以我不需要代码来找出面板,只是如何显示它。

 $.post('<%= ResolveUrl("~/Contract/AddContractLocation") %>', $(form).serialize(), function (data) {
         if (data.Result == "success") {
              ... yada yada... 
              window.location.reload();
         }

编辑添加:

这就是我初学手风琴的方式:

$("#acc").accordion({
         autoHeight: false,
         navigation: true
});

这是基本结构:

<fieldset>
    <legend>Contract</legend>

    <div id="acc">
        <h3><a href="#contractinfo">Contract Info</a></h3>
        <div>
            stuff
        </div>
        <h3><a href="#locationandrs">Locations and Ratesheets</a></h3>   
        <div>
            stuff
        </div>
        <h3><a href="#auditibleterms">Auditable Terms</a></h3>
        <div>
            stuff
        </div>
        <h3><a href="#contractdocs">Contract Docs</a></h3>
        <div>
            stuff
        </div>
    </div>
</fieldset>

3 个答案:

答案 0 :(得分:3)

大约一年后第一次回到这段代码中,当我正在处理其他事情时,能够解决这个问题。

var substr = window.location.href.split('#'); 
window.location.href = substr[0] + "#locationandrs";
window.location.reload();

答案 1 :(得分:2)

您可以在返回值上将active选项设置为true吗?您需要点击链接中的“选项”,但这里是文档:

  

活动元素的选择器。组   为false,在开始时不显示任何内容。   需要折叠:是的。代码示例

     

用活动状态初始化手风琴   选项指定。

$( ".selector" ).accordion({ active: 2 });
     

获取或设置活动选项   初始化。

//getter
var active = $( ".selector" ).accordion( "option", "active" );
//setter
$( ".selector" ).accordion( "option", "active", 2 );

答案 2 :(得分:0)

在提交表单时发送隐藏参数,识别打开的面板。您将获得此参数并使用它在输出HTML代码期间为特定面板指定特殊ID。然后在js-script中使用init accordion:

$('#accordion').accordion({ 
   ...
   ,active: '#panel_selected'
   ...
});
$('#panel_selected').get(0).scrollIntoView(false); // scroll until panel is visible

这就是全部!