我正在尝试做一个向下箭头,它将在使用jquery单击时按顺序(一个接一个)在锚点中移动。到目前为止,我只能设法一次移动它们。



var targets = new Array();
$(".jump").each(function() {
  targets.push($(this).attr('id'));
});

$("#clickme").click(function() {
  for (var i = 0; i < targets.length; i++) {
    if (i + 1 >= targets[i]) {
      $("html, body").animate({
        scrollTop: $('#' + targets[i]).offset().top
      }, 1000);
    }
  }
});

p {
  padding-top: 100px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a style="cursor: pointer;" id="clickme">Click Here</a>
<a class="jump" id="1"></a>
<p>Lorem ipsum dolor sit amet...</p>
<a class="jump" id="2"></a>
<p>Lorem ipsum dolor sit amet...</p>
<a class="jump" id="3"></a>
<p>Lorem ipsum dolor sit amet...</p>





我的代码或算法可能是错误的。我愿意使用jQuery。

最佳答案

要“逐个”锚定,您不需要for循环,而是保存一个索引器,每次单击后您将对其递增(设置为0将再次重置第一个锚定器),并检查是否存在任何索引器。阵列中还有更多项目。



var currentTarget = 0;
var targets= new Array();
            $(".jump").each(function () {
                targets.push($(this).attr('id'));
            });

$("#clickme").click(function () {
 if (currentTarget < targets.length) {
 $("html, body").animate({ scrollTop: $('#' + targets[currentTarget]).offset().top }, 1000);

    currentTarget++;
    // Uncomment to loop
    /*
    if (currentTarget >= targets.length)
      currentTarget=0;
     */
   }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="position:fixed; background: white; border: 1px solid black">
<a style="cursor: pointer;" id="clickme">Click Here</a>
</div>
<a class="jump" id="1"></a>
<p style="height:200px">Lorem ipsum dolor sit amet...</p>
<a class="jump" id="2"></a>
<p style="height:200px">Lorem ipsum dolor sit amet...</p>
<a class="jump" id="3"></a>
<p style="height:200px">Lorem ipsum dolor sit amet...</p>

关于javascript - 使用jQuery滚动浏览 anchor ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45330692/

10-10 14:57