如何在使用jQuery Accordion时停止页面向下滚动

时间:2010-07-16 07:53:10

标签: jquery jquery-ui

我在我的应用程序中使用jQuery UI Accordion, 我遇到的一个问题是: 在第二个标签内,有一个很长的形式。 每当用户进入第二个选项卡时,页面会自动向下滚动到表单的底部。即使在我硬编码并将焦点设置为表单的第一个文本框之后。

任何想法?

提前谢谢大家

3 个答案:

答案 0 :(得分:1)

好吧,我试图在索引更改时起诉焦点,但是,至少,它对我不起作用。 这是我的最终解决方案,它关闭了手风琴UI中的动画:

$("#accordion").accordion(
                     {
                         autoHeight: false,
                         animated: false,
                         active: parseInt(index),
                         event: ""
                     }
);

感谢您的回答。

答案 1 :(得分:1)

页面滚动效果是激活(自动或手动)手风琴选项的工件。

_toggle窗口小部件的ui.accordion函数中的以下代码(ui版本1.8.24)明确调用focus方法:

toShow.prev()
    .attr({
        "aria-expanded": "true",
        "aria-selected": "true",
        tabIndex: 0
    })
    .focus();

此功能已于2012年10月左右在jQuery UI版本1.9.0中删除。

要消除页面向下滚动效果,请删除.focus()方法调用或升级到较新版本的jQuery UI(推荐)。

答案 2 :(得分:0)

我不确定没有一些代码是否有效,但根据doco有一个change event

  

每次手风琴改变时都会触发此事件。如果手风琴是动画的,则动画完成后将触发该事件;否则,立即触发。

因此,可以使用此事件,并在扩展发生后将焦点设置为有效目标。

我已经使用相应的演示/demos/according/default.html对其进行了测试,并在扩展后调用它:

<script type="text/javascript">
$(function() {
    $("#accordion").accordion({
        change: function(event, ui) {
            alert('blah');
            // Add your focus code in here
        }
    });
});
</script>

我还想在所有情况下都提到我使用了手风琴,页面在扩展后没有跳下来。