我有一个包含各种列和多行的表。为了简化这一点,我只需要知道可计费的行数(在本例中为第2列)。换句话说,第2列中有多少行有文字“y”?无论如何,这是我到目前为止所尝试的:
的jQuery
var billable = 0;
// attempt 1
table.rows().eq(1)( function () {
if(table.data() === 'y'){
//priceTotal+=parseInt(table.cell(row,0).data());
alert('This is the billable column, now count which equal "y".')
billable++;
}
});
// attempt 2
column(2).data() === "y"){
alert('This is the billable column, now count which equal "y".')
billable++;
}
答案 0 :(得分:2)
使用jquery我们可以通过父元素中的索引选择元素::nth-child()
,所以简单地说:
$( ".our-table td:nth-child(2):contains('y')" ).length;
刚刚添加到HTML(以防万一):
<tbody class="our-table">
并使用:contains()
选择器,我们选择第2列中的所有<td>
,:contains('y')
答案 1 :(得分:1)
使用dataTables API循环遍历所有行:
var rowCount = table.rows()[0].length;
for (var row=0;row<rowCount;row++) {
if (table.cells(row, 1).data().indexOf('y')>-1) {
billable++;
}
}
alert(billable+' total');
分叉小提琴 - &gt;的 http://jsfiddle.net/3C9Rk/ 强>
注意:Cells
是zerobased,行数可以多种方式找到,上面只是一个API示例。
答案 2 :(得分:0)
isherwood的示例适用于完全匹配,但如果您仅查找包含搜索字词的匹配项,这也会有效:
function countContaining(table, search) {
var count = 0;
$(table).find('td').each(function(e) {
if (e.innerHTML.indexOf(search) > 0) {
count++;
}
});
return count;
}