1

我有一个带有滚动和外部潜水和内部潜水的主 div。我想当我单击一个按钮时,主 div 滚动到下一个内部 div 的开头,这种情况在这个 jsfidlle 中得到了更好的解释

http://jsfiddle.net/alamin84/63FY7/2/

第一次单击滚动到 div 11 然后 12 然后 13 然后到 21 这是在下一个子 div 等等

我试图利用这个问题的第二条评论

通过 Rob W获取可滚动 div 中的第一个和最后一个可见元素, 但是当 console.logged 时,应该保存对第一个可见元素的引用的变量 $first 给了我未定义。问题是它做错了什么?如何正确地做到这一点?

提前致谢

****编辑****

应用 devundef 的建议后,我仍然无法获得正确的滚动顺序

现在是 12 -22 -32

应该是 11 - 12 -13 -21-22…等

换句话说,如何获取第一个可见的内部 div (class="sub2"),然后我可以使用它来获取/滚动到下一个可见的内部 div

新的小提琴

http://jsfiddle.net/alamin84/63FY7/15/

4

3 回答 3

1

此行永远不会计算为true

if ($first && position.top >= positions.top) ...

因为此时 $first 为空。你必须要求!$first

if (!$first && position.top >= positions.top) ...

小提琴:http: //jsfiddle.net/63FY7/3/

顺便说一句,我建议使用 jquery.scrollTo 插件,它工作得很好:

演示:http ://demos.flesler.com/jquery/scrollTo/

片段:http: //jsfiddle.net/wuN65/1/

于 2012-08-05T12:05:36.963 回答
0

如何获得第一个可见的内部 div (class="sub2")?
我不需要外部 div 的外部选择器和内部 div 的内部选择器 只有一个内部 div 的选择器可以

代码:

                 $("#btnScroll").click(function (event) {

                     var $firstinner, $lastinner, $containerinner = $("#dvmn"),
                         positions = $containerinner.offset(),
                         positionsinner = $containerinner.offset();


                     $('.sub2').each(function (i, obj) {
                         var $thisinner = $(this),
                             positioninner = $thisinner.offset();


                         if (!$firstinner && positioninner.top >= positions.top) {

                             $firstinner = $thisinner.next();
                             if ($firstinner.length == 0) {
                //When last inner div get to next outer div
                                 $firstinner = $thisinner.parent().next();

                             }

                             console.log($firstinner);
                         }

                     });

                     $containerinner.scrollTo($($firstinner), {
                         duration: 500
                     });

                 });

小提琴:http: //jsfiddle.net/alamin84/63FY7/24/

当然,感谢 devundef 使用 jquery.scrollTo 插件

于 2012-08-14T00:29:32.107 回答
-1

一个非常粗糙和老派的方法是使用该scrollIntoView()方法。

所以如果你知道下一步element是什么,你可以做..

element.scrollIntoView()

在这里阅读更多。

于 2012-08-05T20:12:08.753 回答