Если вы собираетесь использовать jQuery для своего поведения, нет необходимости использовать href="javascript:blah()"
в вашей разметке.
Прежде всего, вы должны классифицировать свои ссылки, поскольку они обеспечивают поведение - это делаетих легко выбрать в jQuery, а также можно гибко применять уникальные стили к ссылкам, чтобы они отличались от «обычных» ссылок.
Кроме того, вместо использования параметра функциичтобы определить, какой <div>
переключать, вы можете просто использовать «синтаксис закладки».Это будет использоваться jQuery для выбора правильного <div>
для отображения.
В соответствии с вышеизложенным ваша разметка должна выглядеть примерно так:
<div>
<a id="myHeader1" class="toggler" href="#newboxes1" >Home</a>
</div>
<div name="newboxes" id="newboxes1" class="shown">Div #1</div>
<div name="newboxes" id="newboxes2" class="hidden">Div #2</div>
<div name="newboxes" id="newboxes3" class="hidden">Div #3</div>
<div name="newboxes" id="newboxes4" class="hidden">Div #4</div>
<div name="newboxes" id="newboxes5" class="hidden">Div #5</div>
<div>
<a id="myHeader2" class="toggler" href="#newboxes2" >over 1</a>
<a id="myHeader3" class="toggler" href="#newboxes3" >over 2</a>
<a id="myHeader4" class="toggler" href="#newboxes4" >over 3</a>
<a id="myHeader5" class="toggler" href="#newboxes5" >over 4</a>
</div>
Далее просто подключите click()
событие для якорей и поместите логику показа / скрытия в:
$('.toggler').click(function() {
var divToToggle = $(this).attr('href'); // Extract the ID of the div
$('div[name="newboxes"]').each(function() {
// Hide all divs except the one we want to toggle
if ($(this).attr('id') !== divToToggle.replace(/#/, '')) {
$(this).hide(600);
}
});
// Toggle the selected div, and use a callback to show the
// "home" div if all others are hidden
$(divToToggle).toggle(200, function() {
if ($('div[name="newboxes"]:visible').length === 0) {
$('#newboxes1').toggle(200);
}
});
});
Рабочая демонстрация: http://jsfiddle.net/JysG2/