Size: a a a

JavaScript Noobs — сообщество новичков

2020 December 08

SE

So Easy in JavaScript Noobs — сообщество новичков
<div class="TabButton tab__label" tab-number="0">
                       <div class="grid3_2"></div>
                       <div>Прайс</div>
                   </div>
источник

SE

So Easy in JavaScript Noobs — сообщество новичков
document.addEventListener("click", function (event) {
   if (event.this.className == "TabButton tab__label") {
       let numTab = event.this.getAttribute("tab-number");
       let tabLabel = document.querySelectorAll(".TabButton");
       for (let i = 0; i < tabLabel.length; i++) {
           tabLabel[i].classList.remove("activeTab");
       }
       event.this.classList.add("activeTab");
       let tabContent = document.querySelectorAll(".TabContent");


       for (let i = 0; i < tabContent.length; i++) {
           if (numTab == i) {
               tabContent[i].style.display = "flex";
           } else {
               tabContent[i].style.display = "none";
           }
       }
   }
});
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
почему onClick на документе?
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
что еще за event.this.className?
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
это точно работать не будет
источник

SE

So Easy in JavaScript Noobs — сообщество новичков
там .target
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
event.target надо
источник

RR

Roman Resh in JavaScript Noobs — сообщество новичков
Denys Mikhalenko
Почему не работает?
А не, работает
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
почему ты просто не повесишь обработчик на ноду, в которой ты хочешь ловить клики?
источник

RR

Roman Resh in JavaScript Noobs — сообщество новичков
А чё я их вечно в массив переделывал... Наверное для мап
источник

SE

So Easy in JavaScript Noobs — сообщество новичков
Denys Mikhalenko
почему ты просто не повесишь обработчик на ноду, в которой ты хочешь ловить клики?
Слишком сложно
источник

RR

Roman Resh in JavaScript Noobs — сообщество новичков
So Easy
Слишком сложно
Не сложнее чем искать где ты кликнул )
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
так не получится, как ты хочешь
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
на документ приходит одно событие и в event.target там будет самый верхний элемент
источник

SE

So Easy in JavaScript Noobs — сообщество новичков
Сами вкладки работают, но евент клика неправильный
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
поэтому если в .TabButton.tab__label что-то лежит (ребенок) и человек кликом попадает по нему, то в document прилетит событие, где event.target ссылается на этого ребенка
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
поэтому твой if не сработает
источник

SE

So Easy in JavaScript Noobs — сообщество новичков
Тогда нужно как-то искать атрибут родителя?
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
просто принципиально неправильный подход
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
найди все закладки и повесь на каждую событие
источник