jQuery - применить класс к элементу с наибольшим номером - PullRequest
1 голос
/ 28 апреля 2011

У меня есть следующая структура:

<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, так как div с классом num3 имеет наибольшее значение (5,7).

В коде jsfiddle вы увидите, что я использую плагин для расчета jquery, который также доставляет мне проблемы с запятыми (,).

Любая помощь приветствуется!

edit: Большое спасибо 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 ]

2 голосов
/ 28 апреля 2011

Вот некоторый код: http://jsfiddle.net/sQLu7/11/

Вы можете заменить границу css на addClass.Надеюсь, это поможет, ваша проблема заключалась в том, что ваша переменная t вернула только первый элемент.

Отредактируйте oh, и я на самом деле получаю только подэлементы, то есть, если 31 является наибольшим, то 3 не будет получено.Ну, вы можете настроить код по своему усмотрению.

0 голосов
/ 28 апреля 2011
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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...