2015-02-05 39 views
0

有一组按钮需要根据与按钮关联的类来显示。.show()无法处理阵列中的按钮ID

我正在做的是抓住特定类的按钮的ID,并将它们放入相应的数组中。然后,我隐藏所有按钮,不管类是什么,然后基于按钮单击,选择一个特定的数组,并显示与数组中的id关联的按钮。

我的问题是,当我尝试下面的代码时,节目不起作用。

$.each(cadetInfoIds, function(i, val){ 
    $('#categoryButtonGroup #' + i).show(); 
}); 

..但是,当我这样做,它的工作原理

$.each(cadetInfoIds, function(i, val){ 
    $('#categoryButtonGroup #show_info1').show(); 
}); 

下面是相关的代码:

<div class="col-md-4" id="categoryButtonGroup"> 
    <button type="button" class="btn cInfo mInfo dInfo fInfo" id="show_info1">Info 1</button> 
    <button type="button" class="btn cInfo mInfo dInfo" id="show_info2">Info 2</button> 
    <button type="button" class="btn mInfo dInfo fInfo" id="show_info3">Info 3</button> 
    <button type="button" class="btn dInfo fInfo" id="show_info3">Info 3</button> 
</div> 


$(document).ready(function() { 
    var cInfoIds = []; 
    $("#categoryButtonGroup").find(".cInfo").each(function(){ cInfoIds.push(this.id); }); 

    InitializePage(); 

    function InitializePage(){ 
     ShowItemsByCategory('c'); 
     SetButtons(); 
    } 
    function ShowItemsByCategory(category){ 
     $('#categoryButtonGroup button').hide(); 

     switch (category) { 
     case 'c': 
      $.each(cInfoIds, function(i, val){ 
       $('#categoryButtonGroup #' + i).show(); 
       //$('#categoryButtonGroup #show_info1').show(); 
      }); 
      break; 
+2

你为什么不只是使用'$(“#categoryButtonGroup .cInfo”)显示()'代替保存数组中的所有ID? – Barmar 2015-02-05 21:46:46

+0

谢谢巴尔玛,这使得它更有意义,并且使它更有效率。如果你使用它作为答案,我会为你做标记 – Avien 2015-02-05 22:09:24

回答

1

RIF而是保存所有的ID在数组中,你可以使用类时要显示的一切。

$("#categoryButtonGroup .cInfo").show(); 

我有一种感觉,你甚至可以摆脱switch声明。它看起来像所有的*Info类的第一个字母是类别代码,所以你可以做:

$("#categoryButtonGroup ." + category + "Info").show(); 
3

你必须使用vali,因为这最后一个是一个数字索引。参数val包含数组元素。

$.each(cadetInfoIds, function(i, val){ 
    $('#categoryButtonGroup #' + val).show(); 
}); 

由于和id识别页面上的独特元素,你不需要使用选择的层次结构。你可以得到的

$.each(cadetInfoIds, function(i, val){ 
    $('#' + val).show(); 
}); 
+0

谢谢。我不确定问题所在,并添加了#categoryButtonGroup以查看它是否是可见性问题。 – Avien 2015-02-05 22:12:45