我有一個頁面,其中有3個佔位符和文本。這些都隱藏在page_load上,jQuery根據是否存在hashtag將它們設置爲可見。使用jQuery導航到hashtag - 顯示/隱藏內容
我想要使用內嵌鏈接使用標籤,如<a href="#references"></a>
。根據標籤,我想顯示/隱藏其他內容。
使用querystrings很容易上班,但不幸的是,這將給我的情況下非常糟糕的搜索引擎優化。
我得到了一個解決方案,但有一個主要問題。當用戶點擊我的頂部菜單(附加hashtag)時,它會轉到鏈接,但是我的jQuery首先在第二次點擊時運行。會發生以下情況:
- 我們對URL http://www.domain.com
- 用戶點擊我的菜單上,網址爲http://www.domain.com#info,但沒有在標記
- 用戶點擊菜單中的第二次改變,網址是同樣的,但現在的標記改變
我的jQuery腳本:
<script>
$(document).ready(function() {
updateview();
});
function updateview() {
if (document.location.hash.search('calculator') !== -1) {
$("#ContentContainer").hide();
$("#VideoPnl").hide();
$("#CalculatorPnl").show();
}
else if (document.location.hash.search('video') !== -1) {
$("#CalculatorPnl").hide();
$("#VideoPnl").show();
$("#ContentContainer").hide();
} else {
$("#ContentContainer").show();
$("#CalculatorPnl").hide();
$("#VideoPnl").hide();
}
}
我的菜單
在我的菜單每一個菜單點有以下的JavaScript補充說,這是我希望會改變,當點擊屏幕,但這一個第一工作第二次:
menu.Attributes.Add("onclick", "javascript:updateview()");
我在ASP.NET標記:
<asp:Panel runat="server" ID="ContentContainer" ClientIDMode="Static">
<asp:Literal runat="server" ID="ContentPlaceholder"></asp:Literal>
</asp:Panel>
<asp:Panel ID="CalculatorPnl" runat="server" ClientIDMode="Static">
<asp:Literal runat="server" ID="CalculatorHeadlineLtl"></asp:Literal>
<asp:Literal runat="server" ID="CalculatorPlaceholder"></asp:Literal>
</asp:Panel>
<asp:Panel ID="VideoPnl" runat="server" ClientIDMode="Static">
<asp:Literal runat="server" ID="VideoHeadlineLtl"></asp:Literal>
<asp:Literal runat="server" ID="VideoPlaceholder"></asp:Literal>
</asp:Panel>
這是一個答案的野獸,值得大量的贊成票。謝謝! :-) –