使用jQuery显示/隐藏表

And*_*bol 9 javascript jquery animation html-table

我有一系列类似于以下html代码的表:

<table id="film"><tr>
       <th class="1">//HEAD CONTENT 1//</th>
       </tr>
       <tr>
       <td class="1">//BODY CONTENT 1//</td>
       </tr></table>
<table id="film"><tr>
       <th class="2">//HEAD CONTENT 2//</th>
       </tr>
       <tr>
       <td class="2">//BODY CONTENT 2//</td>
       </tr></table>
Run Code Online (Sandbox Code Playgroud)

我希望在<th>单击相应的head()时单独展开表格.表格应该开始未展开.我使用以下jQuery脚本:

$(document).ready(function(){
    $('#film td').hide();
});

$(document).ready(function(){
var n1 = 0;
      $('#film th.1').click(function(){
         if(n1 == 0){
         $('#film td.1').show();
         n1 = 1;
         }else{
        $('#film td.1').hide();
         n1 = 0;}
       });
var n2 = 0;
      $('#film th.2').click(function(){
         if(n2 == 0){
         $('#film td.2').show();
         n2 = 1;
         }else{
        $('#film td.2').hide();
         n2 = 0;}
       });
});
Run Code Online (Sandbox Code Playgroud)

但是,当我只执行顶级表时,能够显示/隐藏第二个表.谁能看到我哪里出错了?

yoo*_*er8 10

您在多个元素上使用相同的ID.当你按id搜索时,jQuery将只返回一个项目(第一个带有该id).所以你的代码只在第一个表上运行.在表上使用类而不是id.

<table class="film">......</table>

$('.film').each(function(f) {
    //this function will execute for each element with the class "film"
    //refer to the current element during this function using "$(this)"
});
Run Code Online (Sandbox Code Playgroud)


Jar*_*Par 6

更简单的方法是使用类而不是table值的id .这样他们就可以更容易地被称为一个群体

<table class="film"> ... 
Run Code Online (Sandbox Code Playgroud)

之后,以下jquery应该为您提供您正在寻找的行为

$(document).ready(function() {
    $('.film td').hide();
    $('th').click(function() {
       $(this).parents('table').find('td').toggle();
    }); 
});
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/WZUAZ/1/