@Aleksandr_KH

Как добавлять и убирать класс соседних блоков?

Всем привет.
У меня есть две кнопки. Button1 и Button2.
Как мне по клику на Button1 добавлять ему класс active, а по клику на Button2 убирать у Button1 active, а Button2 соответственно его добавлять (класс Active). Это первая задача.

Вторая задача, есть еще блок (Block), мне нужно чтобы по клику на Button1 на Block навешивался например класс test1, а по клику на Button2, класс test1 удалялся и вместо него добавлялся класс test2.

По большому счет это должно примерно работать как табы, но я не смог найти нормального простого решения.

Для полного понимаю набросал разметку.
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Складываем данные кнопок и блоков в массив, также добавляем в компонент свойство - ссылку на активный элемент массива (это чья кнопка должна получить класс active и класс которого надо назначить блоку):

data: () => ({
  items: [
    { buttonTitle: '...', blockClass: '...' },
    { buttonTitle: '...', blockClass: '...' },
    ...
  ],
  active: null,
}),

На основе массива создаём кнопки, по клику устанавливаем значение активного элемента:

<button
  v-for="n in items"
  :class="{ active: active === n }"
  @click="active = n"
>{{ n.buttonTitle }}</button>

Соответственно, если активный элемент не null - показываем блок, назначая ему класс:

<div v-if="active" :class="[ 'block', active.blockClass ]">

https://jsfiddle.net/bwmk7f1t/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
<button v-for="button in 2" :key="button" @click="active = button" :class="{active: active === button}">button</button>
<div id="block" :class="`test${active}`">
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы