Javascript 如何滚动JQuery中的元素?
大致上,我试着制作一系列的按钮a B C d,点击a将你滚动到B,点击B将你滚动到C,等等,点击d将你滚动到a 我有一些按钮(“标签”),它们都有类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
标签和一个特定的标签,比如绿色的。我试着让你点击一个名为“绿色”的标签,你就会看到下一个“绿色”,除非它是最后一个,在这种情况下,它会重新开始
以下是我一直在尝试的:
$(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==这一点。你说得对-我错过了这一点。每个都会将其更改为进程中的当前元素。所以我们需要将其保存到变量中以供参考。我更新了代码。