如何仅基于标题行应用一些jquery内容

时间:2013-03-27 03:26:56

标签: javascript jquery html-table jquery-selectors

我有这样的表:

<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的结果列。

3 个答案:

答案 0 :(得分:2)

您可以使用.index()获取标头的索引,然后使用:nth-child selector应用该课程。

jsFiddle

enter image description here

var resultHeaderIndex = $('th:contains("result")').index();
$('td:nth-child(' + (resultHeaderIndex + 1) + ')').addClass('red')

如果你想将这个类添加到标题中,那么你可以在获得索引之前简单地添加它:

jsFiddle

enter image description here

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");

工作演示:http://jsfiddle.net/pitaj/eG5KE/

答案 2 :(得分:0)

我这样做的方法是使用条件和jQuery each

$("th").each(function() {
    if ($(this).text() === "result") { $(this).addClass('red') }
}