使用标题锚文本值隐藏jquery表列

使用标题锚文本值隐藏jquery表列,jquery,show-hide,Jquery,Show Hide,我正在尝试使用jquery基于Table>th>a文本隐藏表列。我的代码只隐藏标题,而不隐藏与标题相关的td列。我曾经也得到th的指数,但不能得到精确解。有人能在这个问题上帮助我吗 输入以逗号分隔的名称 10 测试项目变更 测试1 11 测试项目 测试2 12 测试项目 13 pJPgOjDP 14 Tve4Odmmm 测试3 15 MDq6pQZG4Y tst 4 16 hkfeIDz06Z 测试5 17 测试自动化Huthberg 18 测试自动化ZIV8K48KJV 测试7 19 测试自动

我正在尝试使用jquery基于Table>th>a文本隐藏表列。我的代码只隐藏标题,而不隐藏与标题相关的td列。我曾经也得到th的指数,但不能得到精确解。有人能在这个问题上帮助我吗

输入以逗号分隔的名称
10
测试项目变更
测试1
11
测试项目
测试2
12
测试项目
13
pJPgOjDP
14
Tve4Odmmm
测试3
15
MDq6pQZG4Y
tst 4
16
hkfeIDz06Z
测试5
17
测试自动化Huthberg
18
测试自动化ZIV8K48KJV
测试7
19
测试自动化JY6J8FRD
测试
函数hidecolumn(列){
var表=$(“#tblMyProjects”);
var findColumn=$(table.find('th:contains('+columns+'));
var index=findColumn.index();
findColumn.hide();
$(table.find('tbody td:eq('+index+'))).hide();
}
$('#btnclick')。单击(函数(){
$('#tblMyProjects>tbody')。每个(函数(){
hidecolumn($('#thVal').val());
});
});

我的示例可能比需要的要长一点,但很好地概括了所需的逻辑

您已经有了所需的索引,因此我将遍历所有行,然后遍历所有子元素
td
元素,并删除所有具有相同索引的元素:

var tds;
$(table).find('tr').each(function(key, value) {
    tds = $(this).find('td');
    $(tds).each(function(tdkey, tdval) {
        if(tdkey == index)
            $(this).hide();
    });
});
演示:


注意:它们仍然存在于DOM中,如果您想完全消除它们,应该使用
.remove()
而不是
.hide()
我终于找到了问题的解决方案。我把它贴在这里,以便对其他开发者有用

输入以逗号分隔的名称
10
测试项目变更
测试1
11
测试项目
测试2
12
测试项目
13
pJPgOjDP
14
Tve4Odmmm
测试3
15
MDq6pQZG4Y
tst 4
16
hkfeIDz06Z
测试5
17
测试自动化Huthberg
18
测试自动化ZIV8K48KJV
测试7
19
测试自动化JY6J8FRD
测试
函数hidecolumn(列){
var表=$(“#tblMyProjects”);
var findColumn=$(table.find('th:contains('+columns+'));
var index=findColumn.index();
var-tds;
findColumn.hide();
$(表)。查找('tr')。每个(函数(键、值){
tds=$(this.find('td');
$(tds).每个(函数(tdkey,tdval){
if(tdkey==索引)
$(this.hide();
});
});
}
$(文档).ready(函数(){
$('#btnclick')。单击(函数(){
var数组=$('#thVal').val().split(',');
$。每个(数组、函数(i){
警报(数组[i]);
hidecolumn(数组[i]);
});       
});
});

这似乎很棒,但我无法根据文本框中由逗号分隔的多个条目循环值。你能在这一部分提出一些想法吗?这是我尝试过的$('#btnclick')。单击(function(){var array=$('#thval').val().split(“,”;$)。每个(数组,函数(I){hidecolumn($(array[I]).val()));请注意包含选择器区分大小写的“id”与“id”不同。
var tds;
$(table).find('tr').each(function(key, value) {
    tds = $(this).find('td');
    $(tds).each(function(tdkey, tdval) {
        if(tdkey == index)
            $(this).hide();
    });
});
Enter th names seperated by commas
<input type=text id=thVal >
    <input type=button value='hide entered th related columns' id=btnclick>
<div id="tblMyProjects1" class="flexcroll">
    <table id="tblMyProjects" width=100%>
    <thead>
        <tr>
            <th scope="col">
<a href="/Default/MyProjects?sort=ID&amp;sortdir=ASC">ID</a>            </th>
            <th scope="col">
<a href="/Default/MyProjects?sort=Title&amp;sortdir=ASC">Title</a>            </th>
            <th scope="col">
<a href="/Default/MyProjects?sort=ProjectType&amp;sortdir=ASC">ProjectType</a>            </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>10</td>
            <td>Test Project ALTERED</td>
            <td>test1</td>
        </tr>
        <tr>
            <td>11</td>
            <td>Test Project</td>
            <td>test2</td>
        </tr>
        <tr>
            <td>12</td>
            <td>Test Project</td>
            <td></td>
        </tr>
        <tr>
            <td>13</td>
            <td>pJPgOjDP</td>
            <td></td>
        </tr>
        <tr>
            <td>14</td>
            <td>Tve4Odmmm</td>
            <td>test 3</td>
        </tr>
        <tr>
            <td>15</td>
            <td>MDq6pQZG4Y</td>
            <td>tst 4</td>
        </tr>
        <tr>
            <td>16</td>
            <td>hkfeIDz06Z</td>
            <td>test 5</td>
        </tr>
        <tr>
            <td>17</td>
            <td>TestAutomationeHuthBrG</td>
            <td></td>
        </tr>
        <tr>
            <td>18</td>
            <td>TestAutomationZIv8k48KJv</td>
            <td>test7</td>
        </tr>
        <tr>
            <td>19</td>
            <td>TestAutomationjy6J8FrD</td>
            <td>testing</td>
        </tr>
    </tbody>
    </table>

</div>
function hidecolumn(columns) {
    var table = $('#tblMyProjects');
    var findColumn = $(table.find('th:contains(' + columns + ')'));
    var index = findColumn.index();
    var tds;
    findColumn.hide();
    $(table).find('tr').each(function(key, value) {
        tds = $(this).find('td');
        $(tds).each(function(tdkey, tdval) {
            if(tdkey == index)
                $(this).hide();
        });
    });
}
$(document).ready(function () {
$('#btnclick').click(function(){
   var array = $('#thVal').val().split(',');    
$.each(array,function(i){
    alert(array[i]);
hidecolumn(array[i]);    
});       
});
    });