Самый простой код табов
Существует ли js код ещё проще, чем этот?
<!DOCTYPE html> <html> <head> <style> span{ display: inline-block; margin-right: 10px; } .content{ width: 130px; } .none{ display: none; } </style> </head> <body> <span class='tab'>Tab1</span> <span class='tab'>Tab2</span> <span class='tab'>Tab3</span> <div class="content"> <div class="c">aaaa a aaaaa aaaaaa a a a a aaaaaa aaaaaa aaaaa</div> <div class="c none">bbbb bbbb bbbbb bbbb bbbb bbbbb bbbb bbbbb bbbb bbbbb</div> <div class="c none">ccc ccccc cccccc ccccc cccccc ccccc ccccc</div> </div> <script> var tabs = document.querySelectorAll('.tab') var con = document.querySelectorAll('.c') for (var i = 0; i < tabs.length; i++) { tabs[i].addEventListener('click', function(e) { for (var k = 0; k < tabs.length; k++) { if (this == tabs[k]) { con[k].classList.remove('none'); } else { con[k].classList.add('none'); } } }) } </script> </body> </html> |
DivMan,
<!DOCTYPE html> <html> <head> <style> span{ display: inline-block; margin-right: 10px; } .content{ width: 130px; } .none{ display: none; } </style> </head> <body> <span class='tab'>Tab1</span> <span class='tab'>Tab2</span> <span class='tab'>Tab3</span> <div class="content"> <div class="c">aaaa a aaaaa aaaaaa a a a a aaaaaa aaaaaa aaaaa</div> <div class="c none">bbbb bbbb bbbbb bbbb bbbb bbbbb bbbb bbbbb bbbb bbbbb</div> <div class="c none">ccc ccccc cccccc ccccc cccccc ccccc ccccc</div> </div> <script> var tabs = document.querySelectorAll(".tab"); var con = document.querySelectorAll(".c"); var temp = con[0]; [].forEach.call(tabs, function(item, i) { item.addEventListener("click", function() { temp.classList.add("none"); temp = con[i]; temp.classList.remove("none") }) }); </script> </body> </html> |
А зачем использовать call, если без него работает?
<!DOCTYPE html> <html> <head> <style> span{ display: inline-block; margin-right: 10px; } .content{ width: 130px; } .none{ display: none; } </style> </head> <body> <span class='tab'>Tab1</span> <span class='tab'>Tab2</span> <span class='tab'>Tab3</span> <div class="content"> <div class="c">aaaa a aaaaa aaaaaa a a a a aaaaaa aaaaaa aaaaa</div> <div class="c none">bbbb bbbb bbbbb bbbb bbbb bbbbb bbbb bbbbb bbbb bbbbb</div> <div class="c none">ccc ccccc cccccc ccccc cccccc ccccc ccccc</div> </div> <script> var tabs = document.querySelectorAll(".tab"); var con = document.querySelectorAll(".c"); var temp = con[0]; tabs.forEach(function(item,i){ item.addEventListener("click", function() { temp.classList.add("none"); temp = con[i]; temp.classList.remove("none") }) }) </script> </body> </html> |
Цитата:
|
Цитата:
|
Как вариант, можно вручную указать каким контентом управляет таб, тогда достаточно одного обработчика. Прятать предыдущий можно по селектору.
<!DOCTYPE html> <html> <head> <style> span{ display: inline-block; margin-right: 10px; } .content{ width: 130px; } .none{ display: none; } </style> </head> <body> <div class="tabs"> <span class='tab' data-content="0">Tab1</span> <span class='tab' data-content="1">Tab2</span> <span class='tab' data-content="2">Tab3</span> </div> <div class="content"> <div class="c">aaaa a aaaaa aaaaaa a a a a aaaaaa aaaaaa aaaaa</div> <div class="c none">bbbb bbbb bbbbb bbbb bbbb bbbbb bbbb bbbbb bbbb bbbbb</div> <div class="c none">ccc ccccc cccccc ccccc cccccc ccccc ccccc</div> </div> <script> var contentWrap = document.querySelector(".content"); var content = document.querySelectorAll(".c"); var tabs = document.querySelector(".tabs"); tabs.addEventListener( "click", function(e) { contentWrap.querySelector( "div:not(.none)" ).classList.add("none") content[ e.target.getAttribute("data-content") ].classList.remove("none") } ) </script> </body> </html> |
Попробовал на планшета и без call не работает
|
Цитата:
|
Часовой пояс GMT +3, время: 16:30. |