在jQuery UI Accordion脚本中添加ScrollTo

时间:2011-03-24 19:33:33

标签: jquery accordion scrollto jquery-ui-accordion scrolltop

我搜索高低,但没有找到帮助我特定情况的帖子。我是jQuery的新手,喜欢它的广泛用途。我的手风琴脚本有问题,我需要添加ScrollTo,这样当一个部分被选中时,如果它在视图上方,它会向上滚动窗口。我希望这是有道理的。谢谢你的帮助。

<script type="text/javascript">
        /* <![CDATA[ */
        jQuery().ready(function(){
            jQuery('#leftnav-navigation').accordion({
                active: false,
                header: '.head',
                navigation: true,
                collapsible: true,
                animated: 'easeslide',
                autoheight: false,
                alwaysOpen: false,
            });

            var accordions = jQuery('#leftnav-navigation'); 

            jQuery('#switch select').change(function() {
                accordions.accordion("activate", this.selectedIndex-1);
            });
            jQuery('#close').click(function() {
                accordions.accordion("activate", -1);
            });
            jQuery('#switch2').change(function() {
                accordions.accordion("activate", this.value);
            });
            jQuery('#enable').click(function() {
                accordions.accordion("enable");
            });
            jQuery('#disable').click(function() {
                accordions.accordion("disable");
            });
            jQuery('#remove').click(function() {
                accordions.accordion("destroy");
                wizardButtons.unbind("click");
            });
            return false;
        });
        /* ]]> */
    </script>

感谢ckaufman的帮助。这是最终的工作代码。我希望这可以帮助有需要的人。

<script type="text/javascript">
        /* <![CDATA[ */
        jQuery().ready(function(){
            jQuery('#leftnav-navigation').accordion({
                active: false,
                header: '.head',
                navigation: true,
                collapsible: true,
                animated: 'easeslide',
                autoheight: false,
                alwaysOpen: false,
            });

            var accordions = jQuery('#leftnav-navigation'); 

            jQuery('#switch select').change(function() {
                accordions.accordion("activate", this.selectedIndex-1);
            });
            jQuery('#close').click(function() {
                accordions.accordion("activate", -1);
            });
            jQuery('#switch2').change(function() {
                accordions.accordion("activate", this.value);
            });
            jQuery('#enable').click(function() {
                accordions.accordion("enable");
            });
            jQuery('#disable').click(function() {
                accordions.accordion("disable");
            });
            jQuery('#remove').click(function() {
                accordions.accordion("destroy");
                wizardButtons.unbind("click");
            });

            jQuery('#leftnav-navigation').click(
                function() {
                    var window_top = $(window).scrollTop();
                    var div_top = $(this).offset().top;
                        if (window_top > div_top){
                            $('html, body').animate({scrollTop:div_top}, 300);
                }
            });

            return false;
        });
        /* ]]> */
    </script>

2 个答案:

答案 0 :(得分:1)

我认为这些方面的内容可能有用。我会解释一下,也许你可以通过一些调整来实现它。

jQuery('#divID').click(
  function() {
  var window_top = $(window).scrollTop();
  var div_top = $(this).offset().top;
     if (window_top > div_top){
     $('html, body').animate({scrollTop:div_top}, 300);
     }
    });

点击绑定将检测'div_top'和'window_top'的事件...如果div位于window_top之上,它将滚动到div_top的位置。值得一试,希望它有所帮助。

答案 1 :(得分:0)

实际上,我已经这样做了......

您需要将jQuery的scrollTo.js添加到项目中,然后将ui.accordion.js文件替换为所提供的JSFiddle中的文件:http://jsfiddle.net/Jaybles/6EWAF/