我有一张数据表,我试图一目了然地查看它并找到每行的最高数字。
要做到这一点,我将一个名为highest的css类添加到最高<td>
这样的
<tr>
<td>4.2</td>
<td class="highest">5.0</td>
<td>2.9</td>
</tr>
用这个css
td.highest {font-weight:bold;}
但是这些都是硬编码的,我正在尝试使用jquery来解决这个问题,但我对js很新,并且不确定要开始,我正在考虑使用Math.max
但是因为我可以告诉那些在数组上使用,而不是读取HTML,任何想法?
我在这里制作了一个jsfiddle - http://jsfiddle.net/pudle/vEUUQ/
答案 0 :(得分:7)
第一次打击 - 可能有更短(也可能更有效)的答案......
$('tr').each(function() {
var $td = $(this).children();
// find all the values
var vals = $td.map(function() {
return +$(this).text();
}).get();
// then find their maximum
var max = Math.max.apply(Math, vals);
// tag any cell matching the max value
$td.filter(function() {
return +$(this).text() === max;
}).addClass('highest');
});
答案 1 :(得分:1)
基于这种结构:
<table>
<tr>
<td>4.2</td>
<td>5.0</td>
<td>2.9</td>
</tr>
</table>
您可以使用JS / jQuery并执行:
var highest = 0;
$("table tr td").each(function() {
var current = $(this).text();
if (current > highest) {
highest = current;
$(".highest").removeClass();
$(this).addClass('highest');
}
});
答案 2 :(得分:0)
我能想到的最简单的事情是使用http://underscorejs.org/#max或http://lodash.com/docs#max并传入一个过滤此功能的函数。
var result = _.max($("td"),function(td){ return parseFloat($(td).text()); });
result.addClass("highest");
否则你可以做很多事情:
var result,max 0;
$("td").filter(function(){
var myval = parseFloat($(this).text());
if(myval > max){
result = this;
max = myval;
}
});
result.addClass("highest");
答案 3 :(得分:0)
另一种解决方案,虽然不如其他一些解决方案。
$('tr').each(function() {
var $highest_el;
var highest_num;
$('td', this).each(function() {
if ( $highest_el === undefined || parseFloat($(this).text()) > highest_num ) {
$highest_el = $(this);
highest_num = $(this).text();
}
});
$highest_el.addClass('highest');
});
jsFiddle:http://jsfiddle.net/hRJLQ/2/