jQuery 手风琴 + scrollTo - 需要手风琴才能滚动回到焦点
想知道是否有人可以提供帮助。
我正在使用手风琴在分类网站上显示子类别列表,有 3 个主要类别 - 我们将它们称为 X、Y、Z。
我的问题是子类别列表可能会很长 -并且 X、Y、Z 之间不一致。目前,当单击标题 X 时,手风琴会远远超出折叠范围,因此显然用户会向下滚动页面。当用户单击 Y - 当前子类别列表要小得多时,手风琴将关闭,显示 Y 的子类别列表,但焦点不会在打开的 Y 手风琴上 - 窗口停留在子类别所在的底部X完成了。
有没有某种方法可以将用户引导回 ul.accordionMenu 的顶部?
JS 在这里:
jQuery.fn.initMenu = function() {
return this.each(function(){
var theMenu = $(this).get(0);
$('.acitem', this).hide();
$('li.expand > .acitem', this).show();
$('li.expand > .acitem', this).prev().addClass('active');
$('li a', this).click(
function(e) {
e.stopImmediatePropagation();
var theElement = $(this).next();
var parent = this.parentNode.parentNode;
if($(parent).hasClass('noaccordion')) {
if(theElement[0] === undefined) {
window.location.href = this.href;
}
$(theElement).slideToggle('normal', function() {
if ($(this).is(':visible')) {
$(this).prev().addClass('active');
}
else {
$(this).prev().removeClass('active');
}
});
return false;
}
else {
if(theElement.hasClass('acitem') && theElement.is(':visible')) {
if($(parent).hasClass('collapsible')) {
$('.acitem:visible', parent).first().slideUp('normal',
function() {
$(this).prev().removeClass('active');
}
);
return false;
}
return false;
}
if(theElement.hasClass('acitem') && !theElement.is(':visible')) {
$('.acitem:visible', parent).first().slideUp('normal', function() {
$(this).prev().removeClass('active');
});
theElement.slideDown('normal', function() {
$(this).prev().addClass('active');
});
return false;
}
}
}
);
});
};
$(document).ready(function() {$('.accordionMenu').initMenu();});
任何帮助将不胜感激 - 我已经在这里搜索并尝试了一些建议,但似乎没有任何效果。
was wondering if anyone could help.
I'm using an accordion to display a list of sub-categories on a classifieds website, there are 3 main categories - we'll call them X, Y, Z.
My problem is that the sub-category lists can be quite long - and aren't consistent between X, Y, Z. Currently, when clicking on header X - the accordion extends way beyond the fold so obviously the user will scroll down the page. When the user clicks Y - currently with a lot smaller sub-category list, the accordion will close up revealing Y's sub-category list however the focal point will not be on the opened Y accordion - the window stays at the bottom where sub-category X finished.
Is there some way of directing the user back to the top of the ul.accordionMenu?
JS is here:
jQuery.fn.initMenu = function() {
return this.each(function(){
var theMenu = $(this).get(0);
$('.acitem', this).hide();
$('li.expand > .acitem', this).show();
$('li.expand > .acitem', this).prev().addClass('active');
$('li a', this).click(
function(e) {
e.stopImmediatePropagation();
var theElement = $(this).next();
var parent = this.parentNode.parentNode;
if($(parent).hasClass('noaccordion')) {
if(theElement[0] === undefined) {
window.location.href = this.href;
}
$(theElement).slideToggle('normal', function() {
if ($(this).is(':visible')) {
$(this).prev().addClass('active');
}
else {
$(this).prev().removeClass('active');
}
});
return false;
}
else {
if(theElement.hasClass('acitem') && theElement.is(':visible')) {
if($(parent).hasClass('collapsible')) {
$('.acitem:visible', parent).first().slideUp('normal',
function() {
$(this).prev().removeClass('active');
}
);
return false;
}
return false;
}
if(theElement.hasClass('acitem') && !theElement.is(':visible')) {
$('.acitem:visible', parent).first().slideUp('normal', function() {
$(this).prev().removeClass('active');
});
theElement.slideDown('normal', function() {
$(this).prev().addClass('active');
});
return false;
}
}
}
);
});
};
$(document).ready(function() {$('.accordionMenu').initMenu();});
Any help would be greatly appreciated - I have searched on here and tried a few of the the suggestions however nothing seems to be working.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在单击事件中,使用 animate() 平滑滚动回手风琴的最顶部。
这会将屏幕滚动到
#accordion
的最顶部。是一个简单的长列表的示例:http://jsfiddle.net/SPL_Splinter/dJcBn/
这 每次用户单击一个类别时,屏幕都会滚动回顶部。
In the click event use animate() to scroll smoothly back to the extreme top of the accordion.
This will scroll the screen to the extreme top of
#accordion
.Here's an example with a simple long list: http://jsfiddle.net/SPL_Splinter/dJcBn/
This way every time the user clicks a category the screen will scroll back to the top.