Изменить класс предыдущего селектора> дочерний элемент

У меня есть что-то вроде ниже, где я хочу, чтобы люди нажимали на ЛЮБОЙ текст «кликните сюда», текст [ICON] менял цвет. Мне удалось заставить работать Click here 1, но не 2 и 3. Пожалуйста, помогите, а также скажите, почему мой код не работает.

HTML

<p class = "learnMore"><strong>Click here 1</strong> <span class = "red"> [ ICON ]</span></p>

<ul class = "expandContainer">
<li>Click here 2</li>
<li>Click here 3</li>
</ul>

JS

function learnMore(){
  $('.learnMore').click(function(){
  $('.learnMore span').toggleClass('green');  
});  

$('.expandContainer').click(function(){    
$(this).closest('p').find('span').toggleClass('green'); 
}); 
}  

Вот кодовая ручка

это не то, как ближайший работает, как объясняется во многих повторяющихся сообщениях, подобных этому. api.jquery.com/ближайший

Taplar 09.04.2019 18:25
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
1
22
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Метод jQuery .closest() ищет предков, ваш код не работает, потому что .expandContainer не находится внутри p.

Использовать этот:

function learnMore(){
  $('.learnMore').click(function(){
    $(this).find('span').toggleClass('green');  
  });  

  $('.expandContainer').click(function(){    
    $('.learnMore').find('span').toggleClass('green'); 
  }); 
}  
Ответ принят как подходящий

Ваш селектор был неверным. Попробуйте, как показано в моем образце. PS: я также изменил действие щелчка на отдельные лисы. Если вы хотите, чтобы действие срабатывало, как только будет нажат весь контейнер ul, измените его обратно на:

  $('.expandContainer').click(function(){    
      $(this).siblings('p').find('span').toggleClass('green'); 
  });

РАБОЧИЙ ОБРАЗЕЦ:

$( document ).ready(function() {    
  learnMore(); 
});  

function learnMore(){
  $('.learnMore').click(function(){
      $('.learnMore span').toggleClass('green');  
  });  

  $('.expandContainer li').click(function(){    
      $(this).parent('ul').siblings('p').find('span').toggleClass('green'); 
  });   
   
}
.red {color:red}
.green{color:green}


.learnMore {cursor:pointer}
.expandContainer {cursor:pointer; border:1px solid red}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<p class = "learnMore">
  <strong>Click here 1</strong> 
  <span class = "red"> [ ICON ]</span>  
</p>

<ul class = "expandContainer">
<li>Click here 2</li>
<li>Click here 3</li>
</ul>

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