for循环返回数组中一个项的单个字母而不是数组中的每个项

时间:2013-02-08 02:44:17

标签: javascript jquery loops

我必须使用我制作的数组。一个抓住一些锚标签,另一个抓住一组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的字母。

我是否以正确的方式接近这个?你有一些关于如何做到这一点的想法吗?

2 个答案:

答案 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