用于隐藏div的哈希 - 直接访问页面URL

时间:2013-09-26 20:59:57

标签: jquery css url html hash

我正在开发一个网站,我遇到了以下问题。

我的网站包含4个页面,所有这些页面都只是基于页面上菜单栏隐藏和显示的css div。

以下是我的示例:http://jsfiddle.net/DcwUu/

HTML:

<button class="home-button">Home</button>
<button class="download-button">Download</button>
<button class="about-button">About</button>
<button class="contact-button">Contact</button>

<div class="home-container">
    <div class="left-corner"></div>
    This is the home page!
</div>

<div class="download-container">
    <div class="left-corner"></div>
    This is the download page!
</div>
<div class="about-container">
    <div class="left-corner"></div>
    This is the about page!
</div>
<div class="contact-container">
    <div class="left-corner"></div>
    This is the contact page!
</div>

jQuery的:

$('.home-button').click(
    function(){
        $('.home-container').show();
        $('.download-container').hide();
        $('.about-container').hide();
        $('.contact-container').hide();
    }
);
$('.download-button').click(
    function(){
        $('.download-container').show();
        $('.about-container').hide();
        $('.contact-container').hide();
        $('.home-container').hide();
    }
);
$('.about-button').click(
    function(){
        $('.about-container').show();
        $('.contact-container').hide();
        $('.download-container').hide();
        $('.home-container').hide();        
    }
);
$('.contact-button').click(
    function(){
        $('.contact-container').show();
        $('.home-container').hide();       
        $('.download-container').hide();
        $('.about-container').hide();
    }
);

CSS:

.download-container {display:none;}
.about-container {display:none;}
.contact-container {display:none;}
.home {display:block;}

我的主页是index.php,我可以访问 localhost / mysite / index.php

来访问它

当我点击任何链接并显示/隐藏div时,我的URL更改为 localhost / mysite / index.php#

我似乎找不到通过网址直接访问任何4个“页面”的方法。

谢谢!

2 个答案:

答案 0 :(得分:4)

穷人这样做的方式是这样的:

var hash = window.location.hash.slice(1);
$('.page').hide();
$('#' + hash).show();

所以,给定这样的页面,

<div class="page" id="main"></div>
<div class="page" id="foo"></div>
<div class="page" id="bar"></div>
<div class="page" id="baz"></div>

如果用户转到localhost/mysite/#foo,则会显示foo页面。

答案 1 :(得分:1)

要获得直接访问权限,只需在网址中找到哈希值:

var hash = window.location.hash
$(hash).show();

根据此值,显示正确的div。

对于加载页面上的更改,请侦听哈希值的更改; jQuery为您提供了一个漂亮的hashchanged事件:

$(window).on('hashchange', function() {
  .. work ..
});

在此事件内部,提取您的哈希值,该哈希值应存储在window.location.hash中。根据它的值,显示/隐藏相应的div元素。

请参阅此简单示例:http://jsfiddle.net/aUsHh/3/