对所有href都返回false

时间:2016-06-17 11:07:32

标签: javascript jquery

**更新** 知道了:如果有人知道如何做到这一点。我使用了以下代码。将其粘贴在标题中,以便随处触发。

history.pushState("", document.title, window.location.pathname);

致谢这个答案https://stackoverflow.com/a/16719657/4367486

#item_1只是瞬间可见,然后将其删除。我很高兴。

我在想,这可能吗?我有一个单页设计,有3页不在首页。但我不想链接到首页并在其后面加www.example.com/#something。但是我想让访问者回到他们所在的页面部分。

这是我的菜单结构:

<ul class="section table-of-contents hide-on-med-and-down">
 <li><a href="<?php echo site_url(); ?>" style="display:none;">Home</a></li>
 <li><a href="<?php echo site_url(); ?>/#item_1">Item 1</a></li>
 <li><a href="<?php echo site_url(); ?>/#item_2">Item 2</a></li>
 <li><a href="<?php echo site_url(); ?>/#item_3">Item 3</a></li>
 <li><a href="<?php echo site_url(); ?>/#item_4">Item 4</a></li>
 <li><a href="<?php echo site_url(); ?>/#item_5">Item 5</a></li>
 <li><a href="<?php echo site_url(); ?>/#item_6">Item 6</a></li>
 <li><a href="<?php echo site_url(); ?>/#item_7">Item 7</a></li>
</ul>

我的页面结构:

<article id="item_1" class="scrollspy">
  <div id="id_item_1">
    <div class="container">
    <h2><?php the_title(); ?></h2>
      <div class="row">      
         .....
      </div>
    </div>
  </div> 
</article>
<article id="item_2" class="scrollspy">
  <div id="id_item_2">
    <div class="container">
    <h2><?php the_title(); ?></h2>
      <div class="row">      
         .....
      </div>
    </div>
  </div> 
</article>

所以我使用锚点跳转到首页上的点。

这是平滑滚动的片段。但它针对页面上的所有A元素。是否有可能重建&#34;这段代码可以做我想要的,return falst;所有A元素......

$(function() {
  $('a[href*="#"]:not([href="#"])').click(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;
      }
    }
  });
}); 

我猜我必须使用javascript,但代码会是什么样子? 谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

尝试使用jquery-hashchange js插件。希望这会有所帮助。
您还可以尝试非常适合1页网站的AngularJS。在这里看一个例子:https://docs.angularjs.org/api/ngRoute/directive/ngView

另一种方法是使用HTML5 onpopstate事件

 window.onpopstate = function(event) {
    alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
 };

这是一个很好的例子:
https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate

答案 1 :(得分:0)

'<script>
 function abc()
 {  
   window.history.back();
 }
 </script>'

答案 2 :(得分:0)

如果有人知道如何做到这一点。我使用了以下代码。将其粘贴在标题中,以便随处触发。

history.pushState("", document.title, window.location.pathname);

致谢这个答案https://stackoverflow.com/a/16719657/4367486

#item_1只是瞬间可见,然后被移除。我很高兴。