Как добавить класс в тело с помощью JS?

Я хочу добавить класс .my-class в тело, если класс .views-exposed-form присутствует в #navbar-collapse-second

Код ниже не работает. Как исправить?

(function ($) {

      $('#navbar-collapse-second').hasClass('views-exposed-form' {
           $('body').addClass('my-class');
      });

})(window.jQuery);

введите описание изображения здесь

ОБНОВИТЬ

Я применил ответ объяснять.

Класс удаляется из #navbar-collapse-second, когда .views-exposed-form доступен.

Но невозможно применить то же правило в #navbar-collapse-first, когда .views-manage-menu доступен.

Идея ?

(function ($) {

  if ($("#navbar-collapse-first .views-manage-menu").length) {
      $(".icon-navbar-first-alert").removeClass("icon-navbar-first-alert-disable");
  };

  if ($("#navbar-collapse-second .views-exposed-form").length) {
      $(".icon-navbar-second-alert").removeClass("icon-navbar-second-alert-disable");
  };

})(window.jQuery);

Первое меню:

<a class = "navbar-toggle-first collapsed" data-toggle = "collapse" data-target = "#navbar-collapse-first" aria-expanded = "false">

  <div class = "icon-navbar-first">
    <span class = "fa-layers fa-3x">
      <i class = "far fa-circle"></i>
      <span class = "navbar-icon-open">
        <i class = "fas fa-bars" data-fa-transform = "shrink-8"></i>
      </span>
      <span class = "navbar-icon-close">
        <i class = "fas fa-times" data-fa-transform = "shrink-8"></i>
      </span>
    </span>
  </div>

  <div class = "icon-navbar-first-alert icon-navbar-first-alert-disable">
    <span class = "fa-stack fa-lg">
      <i class = "fas fa-circle fa-stack-2x"></i>
      <span class = "navbar-icon-open">
        <i class = "fas fa-bars fa-stack-1x fa-inverse"></i>
      </span>
      <span class = "navbar-icon-close">
        <i class = "fas fa-times fa-stack-1x fa-inverse"></i>
      </span>
    </span>
  </div>

</a>

</div>

Второе меню:

<div{{ attributes }}>

<a class = "navbar-toggle-second collapsed" data-toggle = "collapse" data-target = "#navbar-collapse-second" aria-expanded = "false">

  <div class = "icon-navbar-second">
    <span class = "fa-layers fa-3x">
      <i class = "far fa-circle"></i>
      <span class = "navbar-icon-open">
        <i class = "fas fa-filter" data-fa-transform = "shrink-9"></i>
      </span>
      <span class = "navbar-icon-close">
        <i class = "fas fa-times" data-fa-transform = "shrink-8"></i>
      </span>
    </span>
  </div>

  <div class = "icon-navbar-second-alert icon-navbar-second-alert-disable">
    <span class = "fa-stack fa-lg">
      <i class = "fas fa-circle fa-stack-2x"></i>
      <span class = "navbar-icon-open">
        <i class = "fas fa-filter fa-stack-1x fa-inverse"></i>
      </span>
      <span class = "navbar-icon-close">
        <i class = "fas fa-times fa-stack-1x fa-inverse"></i>
      </span>
    </span>
  </div>

</a>

</div>

введите описание изображения здесь

введите описание изображения здесь

Разве нельзя добавить кому? .hasClass ('просмотры-открытая-форма', {

Drag13 03.05.2018 17:18

@Vitalii hasClass(className) принимает только один параметр.

explv 03.05.2018 17:21
Поведение ключевого слова "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
2
59
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В вашем коде нет условий. Попробуйте следующее:

if ($('#navbar-collapse-second').hasClass('views-exposed-form')){
   $('body').addClass('my-class');
}

@ drup8, создайте скрипку проблемы.

Mamun 03.05.2018 17:38
Ответ принят как подходящий

Опубликованный вами код даже не запустится, синтаксис недействителен, а hasClass(className) принимает только один параметр, поэтому не совсем уверен, что вы пытаетесь там сделать.

hasClass(className) возвращает истину, если элемент, который вы вызываете, имеет этот класс, он будет возвращать нет true, если у дочернего элемента есть класс, что, я считаю, именно то, что вы пытаетесь сделать здесь.

Предполагая, что ваш HTML имеет такую ​​грубую структуру:

<body>
    <div id = "navbar-collapse-second">
        <div class = "views-exposed-form">
        </div>
    </div>
</body>

Следующий код должен работать:

if ($("#navbar-collapse-second .views-exposed-form").length) {
    $("body").addClass("my-class");
}

Объяснение:

$("#navbar-collapse-second .views-exposed-form") выберет элемент с классом views-exposed-form, который является потомком элемента с идентификатором navbar-collapse-second.

Если элемент был найден (.length> 0), мы добавляем класс к элементу body:

$("body").addClass("my-class");

Спасибо, это работает. Я добавил скриншот к своему вопросу. Я сказал body, чтобы упростить свой вопрос, на самом деле .my-class нужно добавить в .icon-navbar-alert-disable, возможно ли это? вот соответствующая страница s1biose.com/article (правое меню).

drup8 03.05.2018 18:09

Да вместо $("body").addClass("my-class"); вобще $(".icon-navbar-alert-disable").addClass("my-class");

explv 03.05.2018 18:12

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