2010-09-20 53 views
0

的location.hash我们在页面上http://site.com/movies/#posters搜索里面块

<div class="content"> 
    <div id="posters"></div> 
</div> 

我试图用这个代码,跳ID为posters阻止并添加active类是:

$(location.hash).addClass("active"); 

它工作的很好,但有问题。如果有像<a href="http://site.com/movies/actuale/#posters">Actuale</a>这样的链接,它跳转到此链接,而不是<div id="posters"></div>

应跳转到id="posters块内的class="content"块。

<div id="posters"></div>应该成为<div class="active" id="posters"></div>

如何做到这一点?

谢谢。

回答

1

您必须滚动到该元素并防止链接发射。

做一个函数来做到这一点:

function ScrollToHash() { 
    var posX = 0, posY = 0; 
    var obj = document.getElementById(document.location.hash); 
    while(obj) { 
     posY += obj.offetTop; 
     posX += obj.offsetLeft; 
     obj = obj.offsetParent; 
    } 
    window.scrollTo(posX, posY); 
} 

你也不得不一个onclick处理程序添加到您的链接:

<a href="#posters" onclick="ScrollToHash(); return false;">Link</a> 

唯一的问题是,document.location.hash给你hash值而不是链接。你必须找到一个不同的方式来做到这一点。

我可能会误解你正在尝试做的事情,所以希望这至少可以让你朝正确的方向发展。

0

快乐,我认为你必须使用重复的ID。 $('#posters')将选择一个元素与id="posters",而不是简单包含的链接#postershref属性。我建议你看看你的HTML,并确保链接实际上并没有ID posters