在兄弟slideToggle之后滚动窗口到div的顶部

时间:2013-09-04 21:27:26

标签: jquery callback slidetoggle

您好:我在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/

非常感谢任何帮助!

0 个答案:

没有答案