Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Jquery 单页网站,打开部分,更改哈希AJAX_Jquery_Ajax - Fatal编程技术网

Jquery 单页网站,打开部分,更改哈希AJAX

Jquery 单页网站,打开部分,更改哈希AJAX,jquery,ajax,Jquery,Ajax,这可能是一个愚蠢的问题,但假设我有一个单页网站,其中所有部分都是隐藏的,只有在单击按钮菜单时才会显示,以显示特定部分,并隐藏其他部分。现在,当我重新加载页面时,它总是打开默认的第一页。我想用的是 www.example/index.html#page1 或 www.example/index.html#page2 或 www.example/index.html#page3 index.html页面: 菜单: <ul> <li>page1</li> <l

这可能是一个愚蠢的问题,但假设我有一个单页网站,其中所有部分都是隐藏的,只有在单击按钮菜单时才会显示,以显示特定部分,并隐藏其他部分。现在,当我重新加载页面时,它总是打开默认的第一页。我想用的是

www.example/index.html#page1

www.example/index.html#page2

www.example/index.html#page3

index.html页面:

菜单:

<ul>
<li>page1</li>
<li>page2</li>
<li>page3</li>
</ul
  • 第1页
  • 第2页
  • 第3页

  • 对于SEO标准来说,这是完全不可行的,但如果您决定继续,您可以使用
    jQuery

    HTML

    <ul id="myMenu">
        <li><a href="#page1">page1</a></li>
        <li><a href="#page2">page2</a></li>
        <li><a href="#page3">page3</a></li>
    </ul>
    
    <div id="page1" class="pages">content 1</div>
    <div id="page2" class="pages" style="display:none">content 2</div>
    <div id="page3" class="pages" style="display:none">content 3</div>
    

    对于SEO标准来说,这是完全不可行的,但如果您决定继续,您可以使用
    jQuery

    HTML

    <ul id="myMenu">
        <li><a href="#page1">page1</a></li>
        <li><a href="#page2">page2</a></li>
        <li><a href="#page3">page3</a></li>
    </ul>
    
    <div id="page1" class="pages">content 1</div>
    <div id="page2" class="pages" style="display:none">content 2</div>
    <div id="page3" class="pages" style="display:none">content 3</div>
    
    
    
    第1页 第2页 第3页 变量pageID=['page1','page2','page3']; 函数hidePage(){ 对于(变量i=0;i
    
    
    第1页 第2页 第3页 变量pageID=['page1','page2','page3']; 函数hidePage(){
    对于(var i=0;ijQuery有缓存库,你可以使用该库来保存上次打开的选项卡或链接。

    jQuery有缓存库,你可以使用该库来保存上次打开的选项卡或链接。

    Checkout Backbone.js。它只是你正在寻找的..Checkout Backbone.js。它只是你正在寻找的..是的,我知道,对搜索引擎优化没有好处。但是这一个不一定是。无论如何,你的解决方案是我已经有的,但是如果url只有index.html,我怎么打开第2页呢?我不能使用index.html之类的东西吗?page2I已经更新了我的答案。这是在JSFIDLE上测试它的诀窍,所以试一试。请注意,
    hashchange
    事件可能在某些浏览器上不起作用。你有过吗在决定使用之前,请仔细检查。此外,如果答案解决了您的问题,请将其标记为解决方案。:)+谢谢你提到这一点。是的,我知道,这对SEO不好。但这一个不一定是。无论如何,你的解决方案是我已经有的,但是如果url只有index.html,我如何打开第2页呢?我不能使用index.html之类的东西吗?第2页我已经更新了我的答案。这是在JSFIDLE上测试它的技巧,所以试试吧。只要知道
    hashchange
    事件可能在某些浏览器上不起作用。在决定使用它之前,请仔细检查。此外,如果答案解决了您的问题,请将其标记为解决方案。:/1以供参考。
    $(function () {     
        $(window).on("hashchange", function () {
            var hash = window.location.hash;
            if (hash != "") {
                $(".pages").hide();
                $(hash).show();
            }
        });
    });
    
    <html>
      <head>
      </head>
      <body>
        <ul>
          <li><a href="#page1">page1</a></li>
          <li><a href="#page2">page2</a></li>
          <li><a href="#page3">page3</a></li>
        </ul>
        <div id="page1">page1</div>
        <div id="page2">page2</div>
        <div id="page3">page3</div>
        <script>
          var pageIds = ['page1','page2','page3'];
          function hidePage(){
            for(var i=0;i<pageIds.length;i++){
              document.getElementById(pageIds[i]).style.display = 'none';
            }
          }
          function getPage(){
            var hash = window.location.hash.slice(1);
            return document.getElementById(hash);
          }
          function showPage(){
            var currentPage = getPage();
            if(currentPage){
              currentPage.style.cssText = 'display:block';
              }else{
              document.getElementById('page1').style.cssText = 'display:block';
            }
          }
          function initPage(){
            hidePage();
            showPage();
          }
          initPage();
          setInterval(function(){
            initPage();
          },300);
        </script>
      </body>
    </html>