Когда у детей активный класс, текстовый фильтр будет выделен жирным шрифтом

При нажатии на ссылку тега к этому конкретному тегу будет добавлен .active. Я хочу, чтобы, когда в теге присутствует .active, буква p станет синей (к p добавляется .active).

Мне удалось превратить букву «p» в синюю. Однако у меня возникли проблемы с удалением синего цвета и .active, когда ссылка на тег не активна.

$('.tag').click(function() {
  var clicks = $(this).data('clicks');
  if (clicks) {
    $(this).addClass('active');
  } else {
    $(this).removeClass('active');
  }
  $(this).data("clicks", !clicks);
});


$('.tag').click(function() {
  var numActive = $('.active').length
  if (numActive > 0) {
    $(this).closest('.wrap').find('.filter').addClass('active');
  } else {
    $(this).closest('.wrap').find('.filter').removeClass('active');
  }
})
.tag.active {
  color: red;
}

.filter.active {
  color: blue;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div class = "wrap">
  <p class = "filter">filter</p>
  <div class = "tag-wrap">
    <a class = "tag">tag 1</a>
    <a class = "tag">tag 2</a>  
    <a class = "tag">tag 3</a>
  </div>
</div>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете объединить логику в один обработчик кликов и упростить его, используя toggleClass:

$('.tag').click(function() {
  $(this).toggleClass('active');
  updateFilter();
});

function updateFilter() {
  $('.filter').toggleClass('active', $('.tag.active').length > 0);
}
.tag.active {
  color: red;
}

.filter.active {
  color: blue;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div class = "wrap">
  <p class = "filter">filter</p>
  <div class = "tag-wrap">
    <a class = "tag">tag 1</a>
    <a class = "tag">tag 2</a>  
    <a class = "tag">tag 3</a>
  </div>
</div>

также измените этот CSS, чтобы сделать текст фильтра жирным: .filter.active {color: blue; шрифт-вес: жирный;}

Raj Kumar 22.06.2024 14:29

Спасибо @Invulner, но переключатель не работает, если я нажимаю, чтобы выделить каждую вторую ссылку. Он снова станет черным, когда я нажму ссылку на второй тег, и снова подсветится, когда щелкну ссылку на третий тег.

feliel93 23.06.2024 10:04

@ feliel93 Я не понял. Запустите мой фрагмент кода — щелкните любую ссылку, чтобы фильтр оставался активным, пока какая-либо ссылка имеет активный класс. Активный класс из фильтра будет удален только в том случае, если ни одна ссылка не имеет активного класса.

Invulner 23.06.2024 11:39
Ответ принят как подходящий

Вы также можете попробовать это

$('.tag').click(function() {
      $(this).toggleClass('active');
      $('.filter').toggleClass('active', $('.tag').hasClass('active'));
 });

Спасибо @naushad, но переключатель не работает, если я нажимаю, чтобы выделить каждую вторую ссылку. Он снова станет черным, когда я нажму ссылку на второй тег, и снова подсветится, когда щелкну ссылку на третий тег.

feliel93 23.06.2024 10:04

Другие вопросы по теме