您好:我在div中有一页文章,首先隐藏在可点击的横幅后面。每次单击横幅时,它都会使用slideToggle扩展相关的文章div,并关闭使用slideUp打开的任何其他文章div。我有以下代码,如果视图从点击的横幅div的最终位置开始,将窗口向下滚动到该div;但是,如果文章在该div上方关闭,它将向上移出视图,然后窗口不向上滚动到它。我该如何解决这个问题?
$(document).ready(function () {
$(".entry-title-thumbnail-active").click(function () {
$(this).closest('.site-content').find('.entry-content-thumbnail').not($(this).closest('article').find('.entry-content-thumbnail')).slideUp('slow');
$(this).closest('article').find('.entry-content-thumbnail').slideToggle(
'slow', 'swing', $('html,body').animate({
scrollTop: $(this).offset().top
}, 'slow'));
return false;
});
});
基本上,逻辑将DOM树向上移动到父.site-content div,其中包含所有横幅和文章div,然后找到所有子.entry-content-thumbnail div并将它们向上滑动 - 不包括兄弟点击.entry-title-thumbnail-active - 确保没有其他文章显示。然后它再次在树上向上移动到包含所有子元素的文章div,并在该div中找到.entry-content-thumbnail并对其进行扩展。
问题是,如果div在正在执行slideToggle打开的div上方执行了一个slideUp,那么文章的顶部会拉出视图,这会带来不太好的阅读体验。我只是想让窗口滚动回到点击的.entry-title-thumbnail-active。
我把它放在jsFiddle中:http://jsfiddle.net/JGuilford/VzVCD/
非常感谢任何帮助!