jQuery добавить класс к родительскому, если у дочернего элемента есть определенный класс

#html #jquery

#HTML #jquery

Вопрос:

Я надеюсь получить некоторую помощь с помощью небольшого скрипта jQuery. Я просматривал все сообщения, которые я могу найти здесь, в stackoverflow, и пытался собрать все воедино, чтобы достичь этого результата.

Результат, который я ищу, таков — если class .fes-el также имеет class .fn_tags_field

Добавьте class .updated_parent в родительский класс.

Я не очень разбираюсь в программировании каким-либо образом. Так что я, вероятно, испортил что-то действительно основное. Любая помощь будет оценена.

Это то, что я смог собрать воедино до сих пор. Причина, по которой я хочу использовать .parent(), заключается в том, что существует несколько элементов с class .fes-el . Мои предыдущие попытки без использования .parent() привели к тому, что все родительские классы получили .updated_parent добавлено.

 jQuery(document).ready(function($) {
   if ($(".fes-el").hasClass('fn_tags_field')) {
      $(this).parent().addClass('updated_parent');
   }
});
  

Вот как составляется html.

 <div class="fes-field fn_container_start">
   <div class="fes-el fn_tags_field download_tag">      
      <div class="fes-label"></div>
      <div class="fes-fields"></div>
   </div>
</div>
  

Я надеялся, что использование этого бита jQuery добавит class .updated_parent после fn_container_start

Я ценю всю помощь, которую я могу получить.

С уважением, Мортен

Комментарии:

1. Код будет выполняться только во время выполнения: это означает, что если в какой-то момент позже класс будет добавлен к элементу, это не сработает. Это проблема, с которой вы столкнулись?

2. продолжение Терри. Код будет выполняться только один раз при загрузке страницы. Поэтому, если вы хотите запустить код после того, как на вашей странице произошло событие, вам нужно будет добавить свой код в функцию. Затем вызовите функцию в соответствующее время. Что-то вроде — $(‘selector’).click(yourFunction);

Ответ №1:

 function JSFunc(){
    $(".fes-el.fn_tags_field").each(function (index, value) { 
        $(value).parent().addClass("updated_parent");
     })
    
      
}
  

Это переберет все подразделения, найдет подразделения, соответствующие всем требуемым классам, и добавит ваш обновленный класс к родительскому.

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

Комментарии:

1. Отлично, я вижу, что я был далек. Я надеялся, что он будет выполняться при загрузке страницы. Будет ли это работать для этого?

2. Зависит от того, как вы меняете классы, если вы делаете это вручную, тогда да, вы можете запустить это при запуске, но если вы обновляете классы во время выполнения, запустите этот код после, и он сделает это за вас.

3. Классы остаются статичными, ничего не меняется на странице, пока пользователь что-то делает. Когда я пытаюсь добавить код, он по-прежнему ничего не добавляет к родительскому классу.

4. если классы являются статическими, почему бы не добавить классы в html-файл, а не во время выполнения.

5. Ах да, потому что я не контролирую html. Но у меня есть возможность добавить подобный jquery для добавления элементов.