Javascript 将window.scrollTo添加到简单jQuery accordion

Javascript 将window.scrollTo添加到简单jQuery accordion,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我不知道该怎么做。我试过一些变化。我希望窗口根据偏移量滚动到.accordion>dt的顶部。目前,这段代码只是打开面板并开始重新加载页面 (function($) { var $j = jQuery.noConflict(); var allPanels = $j('.accordion > dd').hide(); $('.accordion > a > dt').click(function() { $this = $j(thi

我不知道该怎么做。我试过一些变化。我希望窗口根据偏移量滚动到.accordion>dt的顶部。目前,这段代码只是打开面板并开始重新加载页面

(function($) {

    var $j = jQuery.noConflict();
    var allPanels = $j('.accordion > dd').hide();

    $('.accordion > a > dt').click(function() {
        $this = $j(this);
        $target = $this.parent().next();


        if (!$target.hasClass('active')) {
            allPanels.removeClass('active').slideUp();
            $target.addClass('active').slideDown();
            window.scrollTo($(".accordion").offset().top);
        }

        return false;
    });

})(jQuery);

看起来您的
DT
元素与锚定标记一起驻留。通过返回false,您将停止
DT
元素上的默认单击行为,但是,您仍然需要停止事件向上传播到链接

$('.accordion > a > dt').click(function(e) {

    $this = $j(this);
    $target = $this.parent().next();


    if (!$target.hasClass('active')) {
        allPanels.removeClass('active').slideUp();
        $target.addClass('active').slideDown();
        window.scrollTo($(".accordion").offset().top);
    }

    e.stopPropagation();
    return false;

});

谢谢你的建议。但我复制并粘贴了这个,它似乎不起作用。在firefox中,它会重新加载页面,在Safari中,它会跳到右侧,而单击的手风琴面板不在顶部。除了用我的代码替换这段代码之外,我还应该做些什么吗?你能用一些示例HTML更新你的问题吗,或者用这段代码解决问题吗:它在JSFIDLE中非常有效,但是当我尝试在代码中实现它时,它不起作用,我甚至尝试了一个简单的HTML文档,其中包含了你设置的FIDLE的所有方面,但它不起作用。然后我转到JSFIDLE页面左侧的“panels”表,将“javascript”更改为javascript 1.7,1.7版本显示了我得到的结果。我正在使用google jquery链接到1.7.2,我的html也会显示:panel content感谢您迄今为止的帮助!