Javascript 将window.scrollTo添加到简单jQuery accordion
我不知道该怎么做。我试过一些变化。我希望窗口根据偏移量滚动到.accordion>dt的顶部。目前,这段代码只是打开面板并开始重新加载页面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
(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感谢您迄今为止的帮助!