2012-05-26 71 views
2

我被困在我认为应该很容易的东西...我有一个选择,在变化获取身份证的价值和即将隐藏所有和显示那些用相同的id值 所以它与第一 工作只是任何帮助我,请jQuery的隐藏显示列表元素与选择

<select name="" id="estado_list"> 
<option value="0">-</option> 
<option value="1">Nuevo León</option> 
<option value="2">Puebla</option> 
</select> 


<ul style="list-style: none outside none;"> 
<li class="forli" id="1">data</li> 
<li class="forli" id="1">data</li> 
<li class="forli" id="1">data</li> 
<li class="forli" id="1">data</li> 
<li class="forli" id="1">data</li> 
<li class="forli" id="1">data</li> 
<li class="forli" id="2">data</li> 
</ul> 






$(document).ready(function(){ 
     $("#estado_list").change(function(){ 
     var id = $(this).val(); 

      if (id == 0){$('.forli').show();} 
     else{$('.forli').hide(); 
      $('li').each(function(){ 
      $('#'+ id).show(); 

     }); 
     } 
     }); 
    }); 
+0

你有相同的ID被反复使用,以及作为一个数字。两种做法都是错误的。您应该使用classnames,而不要使用数字来启动它们。 – Sampson

回答

0

Id字段应该是唯一的,并且在从DOM对象访问时会导致问题。尝试使用class字段。

<select name="" id="estado_list"> 
<option value="list0">-</option> 
<option value="list1">Nuevo León</option> 
<option value="list2">Puebla</option> 
</select> 


<ul style="list-style: none outside none;"> 
<li class="forli list1">data</li> 
<li class="forli list1">data</li> 
<li class="forli list1">data</li> 
<li class="forli list1">data</li> 
<li class="forli list1">data</li> 
<li class="forli list1">data</li> 
<li class="forli list2">data</li> 
</ul> 


$(document).ready(function(){ 
    $("#estado_list").change(function(){ 
     $('.forli').hide().filter("."+$(this).val()).show(); 
    }); 
}); 
+0

非常感谢!!!!!!! – morris

+0

@morris您可以标记Jonathan的答案或我的标签,以便社区知道问题已被正确解决 – GrayB

1

您应修改您的标记,以不使用号码id值,以及不超过使用相同的id和过度。我会鼓励你进一步利用阶级的价值观:

<select id="estado_list"> 
<option value="zero">-</option> 
<option value="one">Nuevo León</option> 
<option value="two">Puebla</option> 
</select> 

<ul> 
<li class="forli one">1</li> 
<li class="forli one">2</li> 
<li class="forli one">3</li> 
<li class="forli one">4</li> 
<li class="forli one">5</li> 
<li class="forli one">6</li> 
<li class="forli two">7</li> 
</ul>​ 

一旦你做到了这一点,您可以筛选结果,当你选择的变化:

$("#estado_list").on("change", function(e){ 
    $("li.forli").each(function(){ 
     $(this).toggle($(this).hasClass(e.target.value)); 
    }); 
});​ 

演示:http://jsfiddle.net/JtFvK/1/

+0

非常感谢!!!!!!! – morris