Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Переключение классов по клику в двух блоках (https://javascript.ru/forum/css-html/80243-pereklyuchenie-klassov-po-kliku-v-dvukh-blokakh.html)

Quark_ 13.05.2020 13:25

Переключение классов по клику в двух блоках
 
Помогите плиз со скриптом, при такой структуре:

Код:

<ul id="filter">
<li><a href="#" class="one active">1</a></li>
<li><a href="#" class="two">2</a></li>
<li><a href="#" class="three">3</a></li>
<li><a href="#" class="four">4</a></li>
</ul>

<div id="block">
<div class="one visible">
<div class="one visible">
<div class="one visible">
<div class="two">
<div class="two">
<div class="two">
<div class="three">
<div class="three">
<div class="three">
<div class="four">
<div class="four">
<div class="four">
</div>

При загрузке страницы скриптом "одеваю" классы:
jQuery('#filter li a.eighteen').addClass("active");
jQuery('#block .one').addClass("visible");

Необходимо, чтобы по клику на <a> - активный класс переключался в фильтре и, соответственно visible в блоке.

Nexus 13.05.2020 13:32

Тег «div» нужно обязательно закрывать.
<ul id="filter">
    <li><a href="#" class="one active">1</a></li>
    <li><a href="#" class="two">2</a></li>
    <li><a href="#" class="three">3</a></li>
    <li><a href="#" class="four">4</a></li>
</ul>
 
<div id="block">
    <div class="one visible">one</div>
    <div class="one visible">one</div>
    <div class="one visible">one</div>
    <div class="two">two</div>
    <div class="two">two</div>
    <div class="two">two</div>
    <div class="three">three</div>
    <div class="three">three</div>
    <div class="three">three</div>
    <div class="four">four</div>
    <div class="four">four</div>
    <div class="four">four</div>
</div>

<style>
#filter .active {color: red}
#block > div {display: none;}
#block > div.visible{display: block;}
</style>

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
    var $filter = $('#filter'),
        $block = $('#block');

    $filter.on('click', 'a', function (e) {
        e.preventDefault();
        
        $filter.find('.active').removeClass('active');
        $block.find('.visible').removeClass('visible')
        $block.find('.' + this.className).addClass('visible');
        
        this.classList.add('active');
    });
</script>


Часовой пояс GMT +3, время: 12:26.