По клику на кнопку менять контент сайта сразу в двух местах
Уже 5ый час ищу решение, может вы подскажете.
Делаю что-то вроде самых обыкновенных табов (пример). И это собственно получилось без проблем, пока не стала задача вместе с выбором таба чтобы далеко внизу странички менялась форма в зависимости от выбранного таба. Вот пример кода, с помощью которого были реализованы обычные табы. Но я не могу использовать id="tab1" еще и внизу для форм. Перекопал кучу гулостраничек - везде сухо. Подскажите хотя бы в какой стороне смотреть? JS:
jQuery(document).ready(function() {
jQuery('.tabs .tab-links a').on('click', function(e) {
var currentAttrValue = jQuery(this).attr('href');
// Show/Hide Tabs
jQuery('.tabs ' + currentAttrValue).show().siblings().hide();
// Change/remove current tab to active
jQuery(this).parent('li').addClass('active').siblings().removeClass('active');
e.preventDefault();
});
});
HTML:
<div class="tabs">
<ul class="tab-links">
<li class="active"><a href="#tab1">Tab #1</a></li>
<li><a href="#tab2">Tab #2</a></li>
</ul>
<div class="tab-content">
<div id="tab1" class="tab active">Контент 1</div>
<div id="tab2" class="tab">Контент 2</div>
</div>
</div>
|
CraftLawrence,
берёте индекс li -- затем в блоке tab-content показываите div с такимже индексом и в блоке форм тоже |
Цитата:
Может кому пригодится, кто нагуглит этот топик в будущем. Скрипт кривоват, но работает) Кнопка-запускатор скрипта:
<a id="button1" href="#" id="toggler1" onclick="toggle1('form1', this);">Активатор</a>
Блоки, который мы меняем друг вместо друга (код такой же и для второй пары блоков "changer"): <div id="form1" style="display: block;"> Контент 1 </div> <div id="form2" style="display: none;"> Контент 2 </div> Скрипт:
function toggle1(id, link)
{
openbox1(id, link);
return false;
}
function openbox1(id, toggler1)
{
var form11 = document.getElementById('form1');
var form22 = document.getElementById('form2');
var changer11 = document.getElementById('changer1');
var changer22 = document.getElementById('changer2');
form11.style.display = 'block';
form22.style.display = 'none';
changer11.style.display = 'block';
changer22.style.display = 'none';
}
|
CraftLawrence,
:write: открывашка по индексу ...
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.tab-links li.active, .tab-content div.active, .tab-form div.active{
display: block;
background: rgb(51, 255, 102)
}
.tab-content div, .tab-form div {
display: none;
}
</style>
</head>
<body>
<ul class="tab-links">
<li class="active"><a href="#tab1">Tab #1</a></li>
<li><a href="#tab2">Tab #2</a></li>
<li><a href="#tab3">Tab #3</a></li>
<li><a href="#tab4">Tab #4</a></li>
</ul>
<div class="tab-content">
<div id="tab1" class="tab active">Контент 1</div>
<div id="tab2" class="tab">Контент 2</div>
<div id="tab3" class="tab">Контент 3</div>
<div id="tab4" class="tab">Контент 4</div>
</div>
<div class="tab-form">
<div id="form1" class="tab active">Форм 1</div>
<div id="form2" class="tab">Форм 2</div>
<div id="form3" class="tab">Форм 3</div>
<div id="form4" class="tab">Форм 4</div>
</div>
<script>
var elems = [document.querySelectorAll(".tab-links li"),
document.querySelectorAll(".tab-content div"),
document.querySelectorAll(".tab-form div")];
[].forEach.call(elems[0], function(el, indx) {
el.onclick = function() {
var active = document.querySelectorAll(".active");
for (var i = 0; i < active.length; i++) {
active[i].classList.remove("active");
elems[i][indx].classList.add("active")
}
return false
}
});
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 09:29. |