jQuery - 将类应用于具有最高编号的元素

时间:2011-04-28 09:17:31

标签: jquery jquery-plugins jquery-selectors

我有以下结构:

<div class="num1">4,8</div>  
<div class="num11">2,37</div>  

<div class="num2">3,5</div>  
<div class="num21">1,85</div> 

<div class="num3">5,7</div>  
<div class="num31">2,8</div> 

etc...

现在,我想要做的是为divs numX和numX1添加额外的类,其中X是div具有最高值的数字。

所以,应该测试numX,我已经这样做了:jsfiddleCode但现在我似乎无法弄清楚如何将这个额外的类应用于与我的选择匹配的div。在上面的例子中,我必须将类添加到div类num3和num31,因为类num3的div具有最高值(5,7)。

您将在jsfiddle代码中看到我正在使用计算jquery插件,这也让我遇到了逗号(,)的问题。

感谢任何帮助!

编辑:非常感谢Louskan,我只是这里的解决方案,以防jsfiddle消失或者像这样:

var maxClass='';
var max=0;
$("div[class^='num']").filter(function(){
   return /^num\d$/.test($(this).attr("class"));
}).each(function() {
var val = $(this).html();
val = val.replace(",",".");
if (val > max) {
    max = val;
    maxClass = $(this).attr('class');
}
});

$("div[class^="+maxClass+"]").css('border', '1px red solid');

再一次:谢谢!

2 个答案:

答案 0 :(得分:2)

以下是一些代码:http://jsfiddle.net/sQLu7/11/

您可以使用addClass替换css边框。 希望这个帮助,你的问题是你的t变量只返回第一个元素。

编辑哦,我实际上只检索子元素,这意味着如果31是最高的,那么将不会检索3。那么你可以根据需要调整代码。

答案 1 :(得分:0)

var num = 0;
var class;
$("div[class^='num']").each(function(){
    var float = parseFloat($(this).html().replace(',','.'));
    if (float > num) {
        num = float;
        class = $(this).attr('class');
    };
});
//$( '.' + class ).css('color', '#ff0000');
$( '.' + class ).addClass('selected');

http://jsfiddle.net/ezmilhouse/VREpt/1/