使多个按钮平滑滚动到顶部,如果按下


Make multiple buttons smooth scroll to top if pressed on

下面的代码创建按钮(动态地),如果按下这些按钮,就会将页面顶部表格的某些特定部分涂成红色(不相关)。这些按钮位于表的底部,我希望每当我按下任何按钮时,它都会滚动到顶部(为了显示表)。此外,如果可能的话,我不想用#或#top之类的东西填充我的URL。

   foreach ($simera as $row) {
        echo '<div class="row btn btn-default btn-block" onclick="active_class(''' . $row->aith . ''')">
            <div class="col-xs-4" style="width: 230px">' . $row->t . '(' . $row->tp . ')</div>
            <div class="col-xs-2" style="width: 70px" >' . $row->arxi . '</div>
            <div class="col-xs-2" style="width: 70px" >' . $row->telos . '</div>
            <div class="col-xs-2" style="width: 70px" >' . $row->aith . '</div>
            </div>';
    }

$row->x部分应该是无关的,因为它们必须与按钮上写的内容有关。

我想有另一个脚本像totop(),将滚动到顶部的onclick,但我似乎找不到如何使所有的按钮工作,甚至当我关闭它仍然添加# s到URL(我宁愿不需要)

PS:我不知道如何应用jQuery,所以如果解决方案需要jQuery也请告诉我它是如何应用于代码(例如:如果我需要的东西在头部或一个特定的id像锚或任何地方)…

提前提醒:)

每个按钮的html输出:

<div class="row btn btn-default btn-block" onclick="active_class('B105')">
                <div class="col-xs-4" style="width: 230px">History(Ε)</div>
                <div class="col-xs-2" style="width: 70px" >13:00:00</div>
                <div class="col-xs-2" style="width: 70px" >15:00:00</div>
                <div class="col-xs-2" style="width: 70px" >B105</div>
 </div>

下面的代码(jQuery)将动画滚动到页面的顶部,每当你点击一个元素与类btn,即使更多的添加与JS没有刷新:

$(function(){
  $("body").on("click",".btn",function(){
    $("body").animate({
      scrollTop:0
    });
  });
});

每个单独的块都需要有自己的ID

<div id="block1"></div>

和按钮必须有锚点引用那个ID

<a href="#block1">Block 1</a>

然后谷歌平滑滚动库处理其余的或使用应该超级容易

例如:http://cferdinandi.github.io/smooth-scroll/

您可以使用下面的代码来将事件委托给动态生成的元素:

$(function() {
  $("body").on("click", "a[href^=#]", function() {
    if (location.pathname.replace(/^'//,'') == this.pathname.replace(/^'//,'') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ol>
      <li><a href="#Welcome">Welcome</a></li>
      <li><a href="#First">Item 1</a></li>
      <li><a href="#Second">Item 2</a></li>
      <li><a href="#Third">Item 3</a></li>
      <li><a href="#Fourth">Item 4</a></li>
      <li><a href="#Fifth">Item 5</a></li>
      <li><a href="#Sixth">Item 6</a></li>
      <li><a href="#Seventh">Item 7</a></li>
    </ol>
    <h1 id="Welcome">Welcome</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus earum perferendis asperiores deserunt, expedita inventore architecto ipsum blanditiis possimus fuga harum esse nulla. Nemo nihil beatae repellat totam deleniti. Quod!</p>
    <h2 id="First">First</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sed possimus aliquid, asperiores ratione ab natus eos iusto, deleniti nemo ut consectetur tempora aspernatur. Impedit quibusdam, omnis doloremque quis et numquam!</p>
    <h2 id="Second">Second</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sed possimus aliquid, asperiores ratione ab natus eos iusto, deleniti nemo ut consectetur tempora aspernatur. Impedit quibusdam, omnis doloremque quis et numquam!</p>
    <h2 id="Third">Third</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus nemo quo nisi rem nostrum similique, blanditiis quod cupiditate expedita aut. Nisi quibusdam, enim qui doloribus similique ullam impedit esse quidem?</p>
    <h2 id="Fourth">Fourth</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa sit commodi illo eos vel facere cumque aperiam, provident dolorum assumenda quidem vero ad qui harum voluptatum quos enim placeat quae!</p>
    <h2 id="Fifth">Fifth</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet, adipisci molestiae dicta ad cum id debitis eos nihil reprehenderit beatae, numquam laboriosam, dolorum quis odio optio! Delectus illum, nemo suscipit!</p>
    <h2 id="Sixth">Sixth</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem facere nemo voluptates numquam accusamus optio, voluptatum amet, aliquam eveniet repudiandae atque voluptate ad commodi ducimus impedit ut dolorem iste libero.</p>
    <h2 id="Seventh">Seventh</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet vel ea quo assumenda quam commodi, libero, aliquid praesentium illum nulla, consectetur itaque minus optio quae! Maxime consectetur a modi ad.</p>

我做了以下操作:

添加了这个脚本:

jQuery(document).ready(function ($) {
    $(".scroll").click(function (event) {
        event.preventDefault();
        $('html,body').animate({scrollTop: $(this.hash).offset().top}, 500);
    });
});

then更改this:

<div class="row btn btn-default btn-block" onclick="active_class('B105')">
            <div class="col-xs-4" style="width: 230px">History(Ε)</div>
            <div class="col-xs-2" style="width: 70px" >13:00:00</div>
            <div class="col-xs-2" style="width: 70px" >15:00:00</div>
            <div class="col-xs-2" style="width: 70px" >B105</div>
</div>

:

<a class="row btn btn-default btn-block scroll" href="#top" onclick="active_class('B105')">
            <div class="col-xs-4" style="width: 230px">History(Ε)</div>
            <div class="col-xs-2" style="width: 70px" >13:00:00</div>
            <div class="col-xs-2" style="width: 70px" >15:00:00</div>
            <div class="col-xs-2" style="width: 70px" >B105</div>
</a>

然后我把最上面元素的id改成了id="top"

我想要的"不显示#"在JQuery部分。

感谢你们提供的帮助,帮助我一点一点地找到了答案。:)