Я написал быстрый JSFiddle для вас.Используя метод jQuery .index()
, вы можете получить индекс нажатой ссылки и использовать его для отображения правильного div.Я использовал класс в следующем коде, чтобы показать / скрыть ваш div.Вы можете заменить это дополнительным кусочком логики, например, для постепенного исчезновения каждого div.
Еще один момент, который вам нужно сделать, это то, что вам не нужны постфиксы -1
, -2
и т. Д. В div;index()
и селектор :eq()
справится с этим за вас.Я немного изменил ваш HTML, и вот JS:
JavaScript
$(document).ready(function() {
$("ul a").click(function() {
var index = $(this).parent().index();
$("div#content").find(".show").removeClass("show");
$("div#content").find(".block:eq(" + index + ")").addClass("show");
});
});
HTML
<ul>
<li><a href="#">Nav 1</a></li>
<li><a href="#">Nav 2</a></li>
<li><a href="#">Nav 3</a></li>
<li><a href="#">Nav 4</a></li>
</ul>
<div id="content">
<div class="block">
<p>Lorem ipsum 1</p>
</div>
<div class="block">
<p>Lorem ipsum 2</p>
</div>
<div class="block">
<p>Lorem ipsum 3</p>
</div>
<div class="block">
<p>Lorem ipsum 4</p>
</div>
</div>
В ответ на комментарии, вотпример обновления, который будет скрывать каждый элемент при нажатии на первый li
.Чтобы сделать его более универсальным, вы можете добавить класс (скажем, hideall
) к li
и использовать .hasClass("hideall")
внутри if()
вместо index == 0
, который проверяет, является ли это первым li
в списке. JSFiddle здесь , JS ниже.Я немного отредактировал HTML в Fiddle.
$(document).ready(function() {
$("ul a").click(function() {
var index = $(this).parent().index();
console.log(index);
if(index == 0)
{
$("div#content > div").removeClass("show");
}
else
{
index--;
$("div#content").find(".show").removeClass("show");
$("div#content").find(".block:eq(" + index + ")").addClass("show");
}
});
});