У меня есть следующий сценарий jQuery на моем сайте для переключения вкладок без перезагрузки страницы. Я использую JQuery ядра v1.3.2 (НЕ JQuery UI)jQuery core tabs script - несколько экземпляров?
<!-- JS -->
<script type="text/javascript">
$(function() {
var tabify = function() {
var id = $('#content > div').hide().attr('aria-hidden', 'true').filter(window.location.hash || ':first').show().attr('aria-hidden', 'false').attr('id');
$('#content > ul > li').removeClass('selected').find('a[href=#' + id + ']').parent().addClass('selected');
}
setInterval(tabify, 100);
tabify();
});
</script>
<!-- HTML -->
<div id="content">
<ul>
<li><a href="#blog" role="tab">Blog</a></li>
<li><a href="#videos" role="tab">Videos</a></li>
<li><a href="#photos" role="tab">Photos</a></li>
</ul>
<div id="blog" role="tabpanel" aria-labelledby="tab1" aria-hidden="false">Blog Content</div>
<div id="videos" role="tabpanel" aria-labelledby="tab2" aria-hidden="true">Videos Content</div>
<div id="photos" role="tabpanel" aria-labelledby="tab3" aria-hidden="true">Photos Content</div>
</div>
Я хочу добавить еще один экземпляр этого сценария на той же странице, а просто копировать/вставить это с разными именами переменных не работает. Есть идеи?
EDIT: Вот мой код HTML и JS для второго экземпляра. Проблема в том, что когда я нажимаю на вкладку во втором экземпляре, он скрывает все div div в первом экземпляре и наоборот. Я хочу, чтобы они были независимы друг от друга.
<!-- JS -->
<script type="text/javascript">
$(function() {
var tabifyplayer = function() {
var idplayer = $('#discography > div').hide().attr('aria-hidden', 'true').filter(window.location.hash || ':first').show().attr('aria-hidden', 'false').attr('idplayer');
$('#discography > ul > li').removeClass('selected').find('a[href=#' + idplayer + ']').parent().addClass('selected');
}
setInterval(tabifyplayer, 100);
tabifyplayer();
});
</script>
<!-- HTML -->
<div id="discography">
<ul>
<li><a href="#cor-player" role="tab">Chance of Rain (2009)</a></li>
<li><a href="#debutcd-player" role="tab">Debut CD (2007)</a></li>
</ul>
<div id="cor-player" role="tabpanel" aria-labelledby="tab1" aria-hidden="false">Content Goes Here</div>
<div id="debutcd-player" role="tabpanel" aria-labelledby="tab2" aria-hidden="true">Content Goes Here</div>
</div>
Я обновил свой вопрос со всем соответствующим кодом. Ваше предложение вызывает некоторую неуклюжую навигацию, при которой щелкнутая вкладка не дает вам правильный div. –
@ sam-nabi - Спасибо за добавление дополнительного кода. Я немного изменил свой подход ('filter ($ (this) .attr ('href') || ': first''), чтобы решить, что, по моему мнению, вызывает странную навигацию. Пожалуйста, дайте мне знать, если это поможет. –
Мы получаем там ... он работает хорошо (с обоими экземплярами), за исключением трех вещей: 1. При загрузке страницы все divs расширяются. Следует показывать только первый div, остальные должны быть скрыты. 2 Нажатие на вкладку делает страницу прокруткой вниз до соответствующего якоря. Есть ли способ сохранить положение окна там, где оно есть? 3. Нажатие кнопки «Назад» ничего не делает. Оно должно перейти на ранее загруженную вкладку. Извините, если это тривиальные вещи, я еще не обволакиваю PHP! –