Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据标题选择行_Javascript_Jquery_Html_Css_Jquery Selectors - Fatal编程技术网

Javascript 根据标题选择行

Javascript 根据标题选择行,javascript,jquery,html,css,jquery-selectors,Javascript,Jquery,Html,Css,Jquery Selectors,我有一张桌子 <table id="report"> <thead> <tr> <th class="first_name">First Name</th> <th class="last_name">Last Name</th> <th class="email">Email</th>

我有一张桌子

<table id="report">
    <thead>
        <tr>
            <th class="first_name">First Name</th>
            <th class="last_name">Last Name</th>
            <th class="email">Email</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Larry</td>
            <td>Hughes</td>
            <td>larry@gmail.com</td>
        </tr>
        <tr>
            <td>Mike</td>
            <td>Tyson</td>
            <td>mike@gmail.com</td>
        </tr>
    </tbody>
</table>
像这样

$(function(){
    var $table = $('#report');
    function passTh(nm) {
        var th = "." + nm;
        var idx = $(th).index();
        $table.find('tr :nth-child(' + (idx+1) + ')').hide();
    }
    passTh('first_name');
});

因为您想隐藏th和tr,所以可以使用
nth child
来选择它们,该子项基于以1为基数的索引获取元素

更新

由于您有一个很大的表,因此可以借助css使其更有效

您的Html:

<table id="report">
    <thead>
        <tr>
            <th class="first_name">First Name</th>
            <th class="last_name">Last Name</th>
            <th class="email">Email</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td class="first_name">Larry</td>
            <td class="last_name">Hughes</td>
            <td class="email">larry@gmail.com</td>
        </tr>
        <tr>
            <td class="first_name">Mike</td>
            <td class="last_name">Tyson</td>
            <td class="email">mike@gmail.com</td>
        </tr>
    </tbody>
</table>
这个JS只是在表中添加了一个类:

$(function () {
    var $table = $('#report');
   function passTh(nm) {
        var hide = nm + "_hide";
        $table.addClass(hide);
    }
    passTh('first_name');
});

你的意思是“选择该列中的单元格”吗?是的,我的意思是..对不起,完美..你能解释一下代码吗。同样在一张大桌子上,find()会慢吗?$('table td:nth child('+index+1+')).hide()怎么样?还是应该使用您建议的方法?@user1089173 find总是比使用多个嵌套选择器更快。您可以做一件事来加快将同一类分配给所有tr的速度。启动并使用该选择隐藏它们。这会快得多。@user1089173因为你要将类添加到所有td中,所以最好只使用css,你可以使用css获取事件转换动画,隐藏只添加显示:没有一个你可以更好地使用css acc对我来说。是的,我肯定会使用css方式,但是出于某种原因,我只想使用jquery,您认为该代码正常吗var thtohide=“table#report.”+nm$(thtohide)@user1089173 Barmar的答案很好,因为您不想为每个项都附加到DOM,而是在最后构造一个字符串,这是我认为最快的poss方式。只是稍微调整了一下他的答案看看这个
#report.first_name_hide .first_name,
#report.last_name_hide .last_name,
#report.email_hide .email
{
    display:none;
}
$(function () {
    var $table = $('#report');
   function passTh(nm) {
        var hide = nm + "_hide";
        $table.addClass(hide);
    }
    passTh('first_name');
});