#javascript #html #jquery #arrays #for-loop
#javascript #HTML #jquery #массивы #для цикла
Вопрос:
я пытаюсь изменить содержимое внутри ul
, чтобы оно соответствовало текущему нажатию button
.
<div class="btns">
<button class="active"></button>
<button></button>
<button></button>
</div>
<ul class="dynamiq_content">
<li class="active"></li>
<li></li>
<li></li>
</ul>
<script>
//variables
const ContentBtns = $(".btns button");
const content = $(".dynamiq_content li");
//function
ContentBtns.on("click", function () {
$(this).addClass("active").siblings().removeClass("active");
content.addClass("active");
});
</script>
Комментарии:
1. Не могли бы вы объяснить подробнее, пожалуйста?
2. например: когда я нажимаю первую кнопку, я хочу показать только первую <li class=»active»></li>
3. и только у нажатого есть класс active и li?
Ответ №1:
Если вы хотите сопоставить кнопки и li
элемент, чтобы вы могли работать с массивом.
Вот фрагмент:
//variables
var ContentBtns = $(".btns button");
var content = $(".dynamiq_content li");
//function
for(let i=0;i<=ContentBtns.length;i ){
ContentBtns.eq(i).on("click", function(){
content.removeClass();
ContentBtns.removeClass();
ContentBtns.eq(i).addClass("active");
content.eq(i).addClass("active");
});
}
.active{color:red}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btns">
<button class="active">a</button>
<button>b</button>
<button>c</button>
</div>
<ul class="dynamiq_content">
<li class="active">a</li>
<li>b</li>
<li>c</li>
</ul>
Ответ №2:
content.addClass("active");
С помощью этой строки вы добавляете класс в активный класс к элементу ul, а не к одному из элементов li под ним.
Если вы добавите идентификаторы как к кнопкам, так и к элементам списка, вы можете использовать их для определения, какая кнопка была нажата. После этого вы можете использовать его для выбора того же индекса элементов списка.
Что-то вроде:
ContentBtns.on("click", function () {
$(this).addClass("active").siblings().removeClass("active");
content.find("li")[pressedButtonIndex].addClass("active");
});
Ответ №3:
попробуйте это:
ContentBtns.on("click", function () {
$(this).addClass("active").siblings().removeClass("active");
var index = ContentBtns.index(this);
content.removeClass("active").eq(index).addClass("active");
});