隐藏Div内部的所有桌子,但只保留一个内部Div之前的桌子

时间:2015-07-01 11:20:49

标签: javascript jquery

我正在开发一个Web应用程序,我有几个表位于ID为ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView的主要Div中。现在主要的Div有很多内表和一个内部Div。所以我需要做以下事情: -

  • 隐藏所有内部表格,但内部div之前的表格除了id = tl00_PlaceHolderLeftNavBar_ctl02_WebTreeViewn10Nodes

这是使用firefox bug观察到的标记: -

enter image description here

现在我通过以下方式完成了我所需要的工作: -

#ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView > table:not(:nth-child(11)) {
    display: none;
}

但这不是很优雅,因为如果我重新订购文件夹或添加新文件夹,我需要更新nth-child(11)。在定义它时隐藏所有表格,除了内部div之前的表格更可靠...... 有人可以就此提出建议吗?我正在使用jquery 1.10.2

3 个答案:

答案 0 :(得分:1)

var wrapper = $('#ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView'),
    tables = wrapper.children('table');

tables.not(wrapper.children('div').prev()).hide()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView">
    <table><tr><td>hide</td></tr></table>
    <table><tr><td>hide</td></tr></table>
    <table><tr><td>hide</td></tr></table>
    <table><tr><td>hide</td></tr></table>
    <table><tr><td>show</td></tr></table>
    <div id="tl00_PlaceHolderLeftNavBar_ctl02_WebTreeViewn10Nodes"></div>
    <table><tr><td>hide</td></tr></table>
    <table><tr><td>hide</td></tr></table>
</div>

试试这个:

答案 1 :(得分:0)

使用此东西。

$("#ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView").nextAll('table').css('display','none');
$("#tl00_PlaceHolderLeftNavBar_ctl02_WebTreeViewn10Nodes").prev('table').css('display','block');

答案 2 :(得分:0)

以下代码适合您

inner_div_id:在表{display:none;}

之前