2010-09-20 50 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