我必须使用我制作的数组。一个抓住一些锚标签,另一个抓住一组ul。锚标记都具有name属性,并且ul具有与锚标记name属性匹配的id。除此之外,所有的学生都有班级"。学生"和#34;。隐藏"。 (所有.hidden都设置为display:none)
<div>
<ul>
<li><h4><a name="5th-grade">5th Grade</a></h4></li>
<li><h4><a name="6th-grade">6th Grade</a></h4></li>
<li><h4><a name="7th-grade">7th Grade</a></h4></li>
<li><h4><a name="8th-grade">8th Grade</a></h4></li>
</ul>
</div>
<div>
<ul id="5th-grade" class="students hidden ">
<li>Billy Bob</li>
</ul>
<ul id="6th-grade" class="students hidden">
<li>Bob Sackamano</li>
</ul>
<ul id="7th-grade" class="students hidden">
<li>Matt Blunt</li>
</ul>
</div>
我想要做的就是拥有它,所以当我点击其中一个锚标签时,它会将它的相应名称属性与具有相同ID的ul相匹配,通过删除&#使其显示34; .hidden&#34; class,然后通过添加&#34; .hidden&#34;隐藏任何其他不匹配的ul。类。
到目前为止,我使用一个小jquery和我停止的地方提出了这个问题:
var aGradelist = $('#grade-list ul li a');
var aStudents = $('.students');
aGradelist.click(function(){
var i = '#' + $(this).attr('name');
$('.students'+i).removeClass('hidden');
for(var j=0;j<aStudents.length;j++)
{
console.log(aStudents.attr('id')[j]);
}
});
出现正确的ul是没问题的,但是我无法添加&#34; .hidden&#34;和其他人一起上课。我安慰它发现我的问题中至少有一个是在for循环中,我没有浏览aStudents数组中的每个ul,而是通过aStudents数组中第一项id的字母。
我是否以正确的方式接近这个?你有一些关于如何做到这一点的想法吗?
答案 0 :(得分:2)
如果您的html有效(没有重复的ID),这应该可以解决问题。
var aGradelist = $('#grade-list ul li a');
var aStudents = $('.students');
aGradelist.click(function() {
aStudents.addClass('hidden');
$('#' + $(this).attr('name')).removeClass('hidden');
});
当您调用方法时,jQuery会对DOM元素进行迭代迭代。
此外,如果您想知道初始循环的错误,则应在检索[j]
属性(字符串)之前使用id
。因此,要正确检索id
属性:
for(var j=0;j<aStudents.length;j++) {
console.log(aStudents[j].id);
}
$()[j]
是$().get(j)
(jQuery.fn.get
docs)的简写。
答案 1 :(得分:1)
试试这个:
var aGradelist = $('#grade-list ul li a');
var aStudents = $('.students');
aGradelist.click(function(){
var i = '#' + $(this).attr('name');
aStudents.addClass('hidden');
$('ul' + i).removeClass('hidden');
}
这样做是将hidden
类添加到所有ul
,然后仅从ul
中删除它,该anchor
具有被点击的{{1}}的ID