Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何滚动JQuery中的元素?_Javascript_Jquery - Fatal编程技术网

Javascript 如何滚动JQuery中的元素?

Javascript 如何滚动JQuery中的元素?,javascript,jquery,Javascript,Jquery,大致上,我试着制作一系列的按钮a B C d,点击a将你滚动到B,点击B将你滚动到C,等等,点击d将你滚动到a 我有一些按钮(“标签”),它们都有类标签和一个特定的标签,比如绿色的。我试着让你点击一个名为“绿色”的标签,你就会看到下一个“绿色”,除非它是最后一个,在这种情况下,它会重新开始 以下是我一直在尝试的: $(document).ready(function(){ counter = 0 $('.tag').click(function(){ counte

大致上,我试着制作一系列的按钮a B C d,点击a将你滚动到B,点击B将你滚动到C,等等,点击d将你滚动到a

我有一些按钮(“标签”),它们都有类
标签和一个特定的标签,比如
绿色的
。我试着让你点击一个名为“绿色”的标签,你就会看到下一个“绿色”,除非它是最后一个,在这种情况下,它会重新开始

以下是我一直在尝试的:

$(document).ready(function(){
    counter = 0
    $('.tag').click(function(){
        counter = counter + 1; 
        var scrollTo = '.' + $(this).text(); 
        scrollTo = $(scrollTo)      
        console.debug(scrollTo);
        len = scrollTo.length
        if ( counter > len-1 ) { 
            counter = 0; 
            scrollTo = $(scrollTo)[0]; 
        } else { 
            scrollTo = $(scrollTo)[counter]
        } 
        console.debug(scrollTo);
        $('html, body').animate({ scrollTop: $(scrollTo).parent().offset().top });
    }); 
}); 
这通常是有效的,但前提是你从一开始就开始。我试着让你点击第二个“绿色”标签,它会把你带到第三个,等等


我知道我让这件事变得不必要的复杂。有更简单的方法吗?

您可以使用此代码查找当前元素的索引:

    var counter = 0; 
    var scrollToSelector = '.' + $(this).text(); 
    var scrollTo = $(scrollToSelector);
    var self = this;
    scrollTo.each(function(i, e){
        if (e == self) {
            counter = i + 1;
        }
    });
    if (counter >= scrollTo.length) {
        counter = 0;
    }

如果看不到标记的示例,这有点困难,特别是因为按钮文本被用作选择器等。解决方案可能是使用按钮索引而不是计数器,或者甚至使用DOM遍历来查找下一个要滚动到的元素等。我想问题是,我可以获得带有标记的所有按钮的列表,我可以得到当前的标签,但我不知道如何找出哪些列表项是我当前所在的。它必须滚动吗?你能用锚和书签跳到下一个位置吗?要知道你现在在哪个位置,你可能需要一个系统来检查滚动位置,并在视口中当前可见的任何对象上设置一个标志等。这至少是通常的做法。对于scrollTo的所有实例,它看起来都是e==这一点。你说得对-我错过了这一点。每个都会将其更改为进程中的当前元素。所以我们需要将其保存到变量中以供参考。我更新了代码。