Я создаю меню навигации таким образом, чтобы при нажатии кнопки навигации он получал «выбранный» класс, в то время как этот класс одновременно удалялся из других кнопок. (Я также вхожу и из соответствующих страниц). Основной код:
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<style type="text/css">
ul li a.selected {font-weight:bold;}
div.page {position:absolute;}
</style>
<script type="text/javascript">
$(function(){
$("div.page:not(:first)").hide(); // hide all pages except the home page
$("ul li a").click(function(){
var previous=window.location.hash;
var selected=$(this).attr("href");
if (previous != selected) {
$("div.page"+previous).fadeOut();
$("div.page"+selected).fadeIn();
}
$(this).addClass("selected")
$("ul li a").not(this).removeClass("selected");
});
});
</script>
</head>
<body>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#portfolio">Portfolio</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
<div class="page" id="home">This is my home page.</div>
<div class="page" id="portfolio">This is my portfolio page.</div>
<div class="page" id="contact">This is my contact page.</div>
</body>
</html>
Хотя этот код работает, я "эстетик кода" и не люблю печатать $ ("ul li a"), снова обращаясь к кнопкам навигации; так как я уже набрал это в начале цепочки, похоже, я смог бы получить его в общем виде без перепечатывания. По сути, я хочу выбрать относительное дополнение «this» в исходном выбранном наборе «ul li a». Есть ли общий способ сделать это?