【发布时间】:2016-01-19 10:44:25
【问题描述】:
我正在尝试为 3 个列表组创建一个简单的切换,每个列表组中有多个列表项。每个列表组一次只能有 1 个活动项目,总共 3 个活动项目(每个列表组一个)。
我的代码只停用了最后一个列表组上的列表组活动类,我错过了什么?
见JSbin:https://jsbin.com/hizezu
请在您的答案代码中包含 cmets,以便我了解它的工作原理。谢谢
HTML
<div id="selectPatientCategories">
<div class="list-group">
<h4>Select Doctor</h4>
<hr>
<a href="#" class="list-group-item">Dr. Justice Freedom</a>
<a href="#" class="list-group-item">Dr. Martin Fabio</a>
<a href="#" class="list-group-item">Dr. Jenny Walter</a>
<a href="#" class="list-group-item">Dr. Loius Von Winkle</a>
<a href="#" class="list-group-item">Dr. Mary McDoctors</a>
<a href="#" class="list-group-item">Dr. Freethinker Liver</a>
<a href="#" class="list-group-item">Dr. Cognitive Thinker</a>
</div>
<div class="list-group">
<h4>Select Doctor</h4>
<hr>
<a href="#" class="list-group-item">Dr. Justice Freedom</a>
<a href="#" class="list-group-item">Dr. Martin Fabio</a>
<a href="#" class="list-group-item">Dr. Jenny Walter</a>
<a href="#" class="list-group-item">Dr. Loius Von Winkle</a>
<a href="#" class="list-group-item">Dr. Mary McDoctors</a>
<a href="#" class="list-group-item">Dr. Freethinker Liver</a>
<a href="#" class="list-group-item">Dr. Cognitive Thinker</a>
</div>
<div class="list-group">
<h4>Select Doctor</h4>
<hr>
<a href="#" class="list-group-item">Dr. Justice Freedom</a>
<a href="#" class="list-group-item">Dr. Martin Fabio</a>
<a href="#" class="list-group-item">Dr. Jenny Walter</a>
<a href="#" class="list-group-item">Dr. Loius Von Winkle</a>
<a href="#" class="list-group-item">Dr. Mary McDoctors</a>
<a href="#" class="list-group-item">Dr. Freethinker Liver</a>
<a href="#" class="list-group-item">Dr. Cognitive Thinker</a>
</div>
</div>
还有 JS
// Vanilla JS version of apply class "active" on click of .list-group-item
var listGroup = document.querySelectorAll('#selectPatientCategories .list-group');
//console.log(listGroup);
var cats = document.querySelectorAll('a.list-group-item');
//console.log(cats);
// For each category list group
var listGroupIndex = 0, listGroupLength = listGroup.length;
for (; listGroupIndex < listGroupLength; listGroupIndex++) {
var thisListGroup = listGroup[listGroupIndex];
//console.log(thisListGroup);
// For each category list item
var catIndex = 0, catLength = cats.length;
for (; catIndex < catLength; catIndex++) {
var thiscat = cats[catIndex];
//console.log(listGroupIndex);
// Click function on list item
thiscat.addEventListener('click', function () {
//console.log(thisListGroup);
var thisListGroupCats = thisListGroup.querySelectorAll('a.list-group-item');
//console.log(thisListGroupCats);
var rmcatIndex = 0, rmCatLength = thisListGroupCats.length;
//console.log(rmCatLength);
for (; rmcatIndex < rmCatLength; rmcatIndex++) {
rmthiscat = thisListGroupCats[rmcatIndex];
//console.log(rmthiscat);
rmthiscat.classList.remove('active');
this.classList.add('active');
}
}); // End click function
}
}
【问题讨论】:
-
你为什么要标记 jquery?
-
寻找原版 javascript 答案,但也对 jquery 版本开放
标签: javascript jquery html loops iteration