我有这样的表:
<table>
<thead>
<th>id </th><th>name </th><th>number </th><th>result </th>
</thead>
<tbody>
<tr>
<td>stuff</td>
<td>stuff</td>
<td>stuff</td>
<td>stuff</td>
</tr>
</tbody>
</table>
我想仅将class = "red"
添加到标题为td
的{{1}}
所以只有在页面加载时动态地使用jquery的结果列。
答案 0 :(得分:2)
您可以使用.index()
获取标头的索引,然后使用:nth-child
selector应用该课程。
var resultHeaderIndex = $('th:contains("result")').index();
$('td:nth-child(' + (resultHeaderIndex + 1) + ')').addClass('red')
如果你想将这个类添加到标题中,那么你可以在获得索引之前简单地添加它:
var resultHeaderIndex = $('th:contains("result")')
.addClass('red')
.index();
$('td:nth-child(' + (resultHeaderIndex + 1) + ')').addClass('red')
答案 1 :(得分:1)
我认为使用jQuery .index()
和.eq()
你可以很容易地做到这一点:
(function($){
$.fn.colorColumn = function(headerText, color){
var index = this.find("th").filter(function(){
return ($(this).text() == headerText);
}).css("backgroundColor", color).index();
this.find("tr").each(function(){
$(this).children().eq(index).css({backgroundColor: color});
})
}
})(jQuery);
$("table").colorColumn("number", "red");
答案 2 :(得分:0)
我这样做的方法是使用条件和jQuery each
:
$("th").each(function() {
if ($(this).text() === "result") { $(this).addClass('red') }
}