2012-07-24 29 views
0

无法弄清楚如何使其发挥作用。我已经尝试了一些变化。我希望窗口根据偏移量滚动到.accordion> dt的顶部。目前这段代码只是打开面板并开始重新加载页面。将window.scrollTo添加到简单的jQuery手风琴

(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); 

回答

0

它看起来好像您的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; 

}); 
+0

感谢您的建议。但我复制并粘贴了它,它似乎没有工作。在Firefox中重新加载页面,在Safari中,它跳转到右侧,被点击的手风琴面板不在顶部。除了用我的代码替换这个代码之外,我应该做些什么吗 – 2012-07-31 18:12:45

+0

你可以用一些示例HTML更新你的问题,或者从这个小提琴工作:http://jsfiddle.net/nqr5C/ – 2012-07-31 18:26:04

+0

它在jsfiddle中效果很好,但是当我尝试在我的代码中实现它时不起作用,我甚至尝试了一个简单的HTML文档,它包含了你设置的小提琴的所有方面,但它不起作用。然后我去了jsfiddle页面左边的“panels”表格,并将“javascript”改为了javascript 1.7“,1.7版本显示了我得到的结果。我使用google jquery链接到1.7.2 也是我的html云: panel name

面板内容
感谢您的帮助迄今! – 2012-07-31 19:19:36