Переключить каретки FontAwesome при нажатии с помощью jQuery

FontAwesome, похоже, не загружается здесь во фрагментах, поэтому посмотрите этот JSFiddle:

https://jsfiddle.net/e74coz3f/

То, что я пытаюсь сделать, это сначала показать <i class = "fas fa-caret-down"></i> справа от div, а затем переключиться на отображение <i class = "fas fa-caret-up"></i> после нажатия на product-suggestion-form-container div. Они должны переключаться между вверх и вниз каждый раз, когда вы нажимаете на div.

Что я неправильно понимаю в переключении между классами active и inactive в jQuery?

Если я добавлю такие классы active и inactive в CSS:

https://jsfiddle.net/c12tvgdj/

вообще ничего не показывает.

Соответствующий HTML:

<script src = "https://use.fontawesome.com/releases/v5.15.1/js/all.js"></script>
<script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div class = "product-suggestion-form-container">
  <span class = "form-title">Product Suggestion Form</span>
  <span class = "dropdown-arrow-top inactive-1"><i class = "fas fa-caret-down"></i>
  <span class = "dropdown-arrow-up-top active-2"><i class = "fas fa-caret-up"></i>
  </span>
</div>

CSS

/*before toggle*/

.product-suggestion-form-container {
  border: 1px solid #c6c6c6;
  padding: 5px 10px;
  display: flex;
  justify-content: space-between;
  background-color: #f8f7f7;
  cursor: pointer;
}

.dropdown-arrow-top {
  display: block;
}

.dropdown-arrow-up-top {
  display: none;
}

/*after toggle*/

.dropdown-arrow-top.inactive-1 {
  /*display: none;*/
}

.dropdown-arrow-up-top.active-1 {
  /*display: block;*/
}

Javascript:

$(document).ready(function(){
   $(".product-suggestion-form-container").click(function(){
      $(".form-div-top").slideToggle();
      $(".dropdown-arrow-top").toggleClass("inactive-1");
      $(".dropdown-arrow-up-top").toggleClass("active-1");
   })
});

Почему вы используете старую версию jquery? 1.11.1

s.kuznetsov 13.12.2020 01:22

@sergeykuznetsov Я только что получил это прямо отсюда: stackoverflow.com/questions/10113366/… но хорошая мысль

HappyHands31 13.12.2020 01:24

Вопросу, который вы задали, 9 лет. На тот момент была актуальна версия 1.11.1. Теперь нужно сменить версию jquery на новую — 3.3.1. <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jqu‌​ery.min.js"></script‌​>

s.kuznetsov 13.12.2020 01:29
Поведение ключевого слова "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) для оценки ваших знаний,...
2
3
146
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В ваших примерах есть несколько мелких опечаток:

  1. В https://jsfiddle.net/e74coz3f/active-2 используется вместо active-1

  2. В https://jsfiddle.net/c12tvgdj/ вторая span не закрыта и вышеописанная проблема тоже есть

Кроме того, jQuery установлен неправильно, и я получаю Uncaught ReferenceError: $ is not defined в консоли JSFiddle.

Наконец, я думаю, что это можно реализовать несколькими более простыми способами, например. https://jsfiddle.net/c7hwv0a6/1/ или https://jsfiddle.net/a18ju6bv/.

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