2012-07-19 60 views
-2

我想要一个表,让我们说10个总列,但是当表第一次呈现时,我希望它只显示10个中的7个,或者隐藏3个列从中间让我们说(不是结束3或第一)。然后,有一个按钮或其他东西,如果他们点击,它会展开表格并将这些列插入到正确的位置。隐藏,然后在HTML中展开或显示一列

这可能吗?我正在使用jQuery。我知道在jQuery中有一个显示和隐藏功能,但它似乎只适用于对象,例如作为一个整体的段落或表格,而不是特定的元素。

目前我有这样的:

<table id="tableone" border="1"> 
    <tr class="del"> 
     <td>Row 0 Column 0</td> 
     <td >Row 0 Column 1</td> 
     <td >Row 0 Column 2</td> 
    </tr> 
    <tr class="del"> 
     <td>Row 1 Column 0</td> 
     <td>Row 1 Column 1</td> 
     <td>Row 1 Column 2</td> 
    </tr> 
    <tr class="del"> 
     <td>Row 2 Column 0</td> 
     <td>Row 2 Column 1</td> 
     <td>Row 2 Column 2</td> 
    </tr> 
    <tr class="del"> 
     <td>Row 3 Column 0</td> 
     <td>Row 3 Column 1</td> 
     <td>Row 3 Column 2</td> 
    </tr> 
    <tr class="del"> 
     <td>Row 4 Column 0</td> 
     <td>Row 4 Column 1</td> 
     <td>Row 4 Column 2</td> 
    </tr> 
    <tr class="del"> 
     <td>Row 5 Column 0</td> 
     <td>Row 5 Column 1</td> 
     <td>Row 5 Column 2</td> 
    </tr> 
</table> 
+4

你试过了什么?显示一些除了标记以外的调试代码。 – Shreedhar 2012-07-19 15:33:03

回答

1

你可以做到这一点使用jQuery,给一些相似的类到你想要的点击后显示,列 如果我理解正确的,你可以试试下面

$("button").on("click", function(){ 
    $("class_of_the_colums").toggle(); 
} 

,你可以看看jQuery的更多信息:http://www.jquery.com

+0

因此,每列有不同的类别? – user1530318 2012-07-19 15:41:52

+0

给与您想要隐藏并显示在按钮上的列相似的类。在按钮点击时,具有相同类别的柱子将显示/隐藏。 – Shreedhar 2012-07-19 15:43:35

0

您可以使用CSS选择器来只选择s所有的TR如下内pecific阵: (计数从1开始,而不是0!)

​$('tr td:nth-child(2)').hide()​​​​​​​​​​​​​​​​​​​​​​​​; 

当你想柱再次显示,你可以这样做:

​$('tr td:nth-child(2)').show()​​​​​​​​​​​​​​​​​​​​​​​​; 

如果您正在计划改变要隐藏的列数或他们的位置,您最好将这些列分配给这些列并使用$('.className').hide(),但在与上述示例相同的波长上,您应该这样做:

$(document).ready(function() { 
     // Creates a reference to columns 2 and 3; 
     var $columnsToHide = $('tr td:nth-child(2), tr td:nth-child(3)'); 
     // Hides them 
     $columnsToHide.toggle(); 
     // if element with id buttonID is clicked 
     $('#buttonID').on('click', function() { 
      // show the columns 
      $columnsToHide.toggle(); 
     }); 
    }​); 
+0

好吧,以便工作,但我如何自动隐藏列2和3让我们从桌子加载时从一开始就渲染?然后他们点击显示,它会显示 – user1530318 2012-07-19 15:48:50

0

或许,如果你使用的唯一ID的任何及所有元素要隐藏,如:

<table id="tableone" border="1"> 
<tr id="del1"> 
<td>Row 0 Column 0</td> 
<td >Row 0 Column 1</td> 
<td >Row 0 Column 2</td> 
</tr> 
<tr id="del2"> 
<td>Row 1 Column 0</td> 
<td>Row 1 Column 1</td> 
<td>Row 1 Column 2</td> 
</tr> 
<tr id="del3"> 
<td>Row 2 Column 0</td> 
<td>Row 2 Column 1</td> 
<td>Row 2 Column 2</td> 
</tr> 
<tr id="del4"> 
<td>Row 3 Column 0</td> 
<td>Row 3 Column 1</td> 
<td>Row 3 Column 2</td> 
</tr> 
<tr id="del5"> 
<td>Row 4 Column 0</td> 
<td>Row 4 Column 1</td> 
<td>Row 4 Column 2</td> 
</tr> 
<tr id="del6"> 
<td>Row 5 Column 0</td> 
<td>Row 5 Column 1</td> 
<td>Row 5 Column 2</td> 
</tr> 

然后,在你的CSS样式,在这里你有.DEL你将它改为:

#del1, 
#del2, 
#del3, 
#del4, 
#del5, 
#del6{ 
properties 
} 

然后用你的jQuery你可以使用:

$(document).ready(function(){ 
$("#del3").hide(); 
$("#del4").hide(); 
}); 

和:

$("#id_of_button_that_will_show_the_hidden_elements").click(function(){ 
$("#del3").show(); 
$("#del4").show(); 
}); 

这不适用于所有与$(“。del”)相同类的元素。将只隐藏该类的所有元素。

希望我帮助=)

+0

这是有帮助的,谢谢!但在这里,我只删除相关ID的行....要删除列,我是否会为每个​​元素分配一个类? – user1530318 2012-07-19 16:34:48

+0

是的,你可以为​​元素分配一个类或一个id,只要记住,如果你使用类,jQuery将识别并应用你指定的函数给所有具有该类的元素。如果您使用ID确保没有多次使用id,则该id对于每个元素都是唯一的,并且如果将其分配给多个元素将会导致问题。 – Dom 2012-07-19 16:43:39

0

你可以写一个函数,它确实是这样的:

function hssel(cls,from,fr,hs) { 
    if (from < 0) { 
var chlds = $('tr.'+cls).parent().children().length; 
    from = chlds + from; 
    } 
    for (var i = from+1,fr = (from+fr)||from+1 ;i <= fr ;i++) { 
    $('tr.'+cls+':nth-child('+i+')')[(hs=="show"?"show":"hide")](); 
    } 
} 

//hssel("del",0) //would hide the first row with the class del 
//hssel("del",0,3) //would hide the first three rows 
//hssel("del",-3,3) //would hide the last three rows 
//hssel("del",-3,3,"show"); //would show the last three rows 
hssel("del",-3,3); 

下面是一个例子JSBin
这里是^^

列相同的功能
function hssel(cls,from,fr,hs) { 
    if (from < 0) { 
    var chlds = $('tr.'+cls+':first-child').children().length; 
    console.log(chlds); 
    from = chlds + from; 
    } 
    for (var i = from+1,fr = (from+fr)||from+1 ;i <= fr ;i++) { 
    $('tr.'+cls+' td:nth-child('+i+')')[(hs=="show"?"show":"hide")](); 
    } 
} 

JSBin示例
的用法与行相同

+0

哦,该死的,我把cols和rows弄糟了,我的坏。 – C5H8NNaO4 2012-07-19 16:39:36