2010-05-17 63 views
4

我正在使用jquery,并且需要完成一些事情。使用锚显示div

1)当有人点击一个链接(或在我的情况下,div)显示另一个div,我想添加一个锚点的URL。

所以,如果有人点击“Live”链接,'live'div滑落,我们将追加#live到网址。

2)如果有人访问该页面并将#live锚点保留在url的末尾,那么'live'div应该立即可见。

我知道如何处理slideDown()的基本部分,如果有人点击一个div。我不知道如何追加hashtag,或者使它在加载页面时检查hashtag并显示相应的div。

任何帮助理解这一点,将不胜感激。提前致谢。

回答

9

Appening哈希的URL是操纵location.hash,例如简单:

$("a.live").click(function() { 
    window.location.hash = 'live'; // not needed if the href is '#live' 
}); 

您可以轻松地测试了它的存在,并采取相应的行动基于它的价值时,页面加载,如:

$(document).ready(function() { 
    var hashVal = window.location.hash.split("#")[1]; 
    if(hashVal == 'live') { 
     $("#live").show(); 
    } 
}); 
+0

的感谢!正是我所期待的。 – Andelas 2010-05-17 12:20:45

5

如果您有类似这样的标记:

<a href="#div5" class="toggler">Toggle Div 5</a> 
<div id="div5">Content for Div 5</div> 

你可以做T他在jQuery的:

$("a.toggler").click(function() { 
    $(this.hash).slideToggle(); 
}); 

或者使用rel或一个div东西,你点击,这样的:

<div rel="#div5" class="toggler">Toggle Div 5</a> 
<div id="div5">Content for Div 5</div> 

,并调整了jQuery这样的:

$("div.toggler").click(function() { 
    var hash = $(this).attr("rel"); 
    $(hash).slideToggle(); 
    window.location.hash = hash; 
}); 

我的建议要在锚点上使用display:block;来做你想做的事情,并利用默认的浏览器行为,它会在点击时处理散列。

无论哪个上面的方法,你可以显示像这样在页面加载的一个:

$(function() { 
    if(location.hash != "") { 
    $(location.hash + ":hidden").slideDown(); 
    } 
});