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');
});