Javascript 每个 tr 中的最高数字,跳过 3 列

标签 javascript jquery

我有一个表,它将向每个 tr 中的最高数字添加一个类。

我希望它跳过前 3 列而不搜索它们。然后,如果有多个最高值,则也将它们加粗。

我将在这里粘贴代码以及 fiddle 。

HTML

    <style>
        .highest {
        font-weight: bold;
    }
    </style>

<table width="300">
    <tr>
        <th>no</th>
        <th>no</th>
        <th>no</th>
        <th>yes</th>
        <th>yes</th>
        <th>yes</th>
    </tr>    
    <tr>
        <td>150</td>
        <td>name</td>
        <td>10.5</td>
        <td>1.5</td>
        <td>12</td>
        <td>9.3</td>
    </tr>
    <tr>
        <td>12.0</td>
        <td>name</td>
        <td>150</td>
        <td>150</td>
        <td>13.5</td>
        <td>150</td>
    </tr>
    <tr>
        <td>160</td>
        <td>name</td>
        <td>115</td>
        <td>15</td>
        <td>11</td>
        <td>160</td>
    </tr>
    <tr>
        <td>145</td>
        <td>name</td>
        <td>151</td>
        <td>12</td>
        <td>18</td>
        <td>18</td>
    </tr>
</table>

JAVASCRIPT

jQuery(function($) {
    $.fn.max = function(callback) {
        var max = null,
            maxIndex = null;

        this.each(function() {
            var value = callback.call(this);
            if (+value === value) {
                if (!max || value > max) {
                    max = value;
                    maxIndex = $(this).index();
                }
            }

        });
        return max !== null ? this.eq(maxIndex) : $();
    };
}(jQuery));


$('tr').each(function() 
    $(this).children('td').max(function() {
        var value = +$(this).text();
        if (!isNaN(value)) {
            return value;
        }
    }).addClass('highest');
});

fiddle

http://jsfiddle.net/65S7N/96/

最佳答案

只需将选择器作为参数添加到插件中,然后按其进行过滤:

jQuery(function($) {
    $.fn.max = function(selector) {
        var elems = $();
        this.each(function() {
            var max = 0,
                ele = $(this).find(selector).each(function(i,el) {
                var n  = parseFloat($(el).text());
                if ( n > max ) max = n;
            }).filter(function() {
                return parseFloat($(this).text()) === max;
            });
            elems = elems.add(ele);
        });
        return elems;
    };
}(jQuery));


$('tr').max('td:gt(2)').addClass('highest');

FIDDLE

关于Javascript 每个 tr 中的最高数字,跳过 3 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977695/

相关文章:

javascript - 刷新页面后图片位置不正确

javascript - JQuery UI 的默认选择问题 'selectable'

Json 字符串的 Javascript eval() 注入(inject)全局作用域函数

javascript - CSS样式在JavaScript中输出空字符串

javascript - 如何在 PureScript 中创建外部常量?

javascript - 在 leaflet.js map 上覆盖文本框

javascript - 从 Ember Addon 中注入(inject) Controller 操作

jquery - 如何使用 Sequelize 修复 RAW 查询

javascript - 如何删除javascript变量引用

javascript - 以下函数中加号 (+) 的作用是什么,该函数摘自 jquery 源代码