У меня есть что-то вроде ниже, где я хочу, чтобы люди нажимали на ЛЮБОЙ текст «кликните сюда», текст [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');
});
}
Вот кодовая ручка
Метод 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>
это не то, как ближайший работает, как объясняется во многих повторяющихся сообщениях, подобных этому. api.jquery.com/ближайший