私は新しい ASP.NET Web フォーム開発者で、マスター ページで Twitter Bootstrap を使用しようとしています。ユーザーが選択したときにナビゲーションバー項目をアクティブに設定するのに苦労しています。ASP.NET で Twitter Bootstrap を使用する方法に関するこのチュートリアルに従って、簡単なマスター ページを作成しました。
私のマスターページのコードは次のとおりです。
<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="css/bootstrap.css" rel="stylesheet" type="text/css" />
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<div class="container">
<div class="row-fluid">
<div class="span12">
<div class="page-header">
<h1>Hello... My First Website with Twitter Bootstrap</h1>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span3">
<ul class="nav nav-list">
<li class="nav-header">Navigation</li>
<li class="active"><a href="Default.aspx">ASP.NET</a></li>
<li><a href="Default2.aspx">Java</a></li>
<li><a href="#">VB.Net</a></li>
<li><a href="#">C#</a></li>
</ul>
</div>
<div class="span9">
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</div>
</div>
</div>
</form>
</body>
</html>
次に、メニューの問題を修正するために、このスクリプトをヘッドに追加しました。
<script type="text/javascript">
$(document).ready(function () {
var url = window.location.pathname;
var substr = url.split('/');
var urlaspx = substr[substr.length - 1];
$('.nav').find('.active').removeClass('active');
$('.nav li a').each(function () {
if (this.href.indexOf(urlaspx) >= 0) {
$(this).parent().addClass('active');
}
});
});
</script>
ただし、何も変更されていません。ナビゲーション バーからアイテムを選択したときに、アクティブなクラスが新しく選択したアイテムに追加されていません。その理由はわかりません。この問題を解決するのを手伝ってくれませんか?