Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите разобраться с .each() в jquery (https://javascript.ru/forum/events/44561-pomogite-razobratsya-s-each-v-jquery.html)

housewm 24.01.2014 14:32

Помогите разобраться с .each() в jquery
 
У меня на странице n количество элементов с классом class в которых содержатся числа

<span class="class">123</span>


в некоторых числа записанны со знаком + некоторые с -

как сделать перебор всех этих элементов с классом class чтобы те у которых знак + цвет поменялся на зеленый а те у которых - поменялся на красный?

нашел что перебор всех элементов можно сделать четех .each() но не могу понять как он работает

знаки определяю через регулярные выражения

var pattern = /-[0-9]/i;
    if(pattern.test($('.class').text())){
    $('.class').addClass('red');
    }else{
    $('.class').addClass('green');
    }

ksa 24.01.2014 14:44

Цитата:

Сообщение от housewm
с классом class

С фантазией проблемы? :D
danik.jsа на тебя нет! :D

Цитата:

Сообщение от housewm
как сделать перебор всех этих элементов с классом class чтобы те у которых знак + цвет поменялся на зеленый а те у которых - поменялся на красный?

Без явного перебора...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(function (){
	$('.class:contains("-")').css('color','red');
	$('.class:contains("+")').css('color','green');
});
</script>
</head>
<body>
<span class="class">123</span>
<span class="class">-123</span>
<span class="class">+123</span>
</body>
</html>

housewm 24.01.2014 14:45

делаю вот так

$('span').each(function() {
	var pattern = /-[0-9]/i;
        if(pattern.test($('span').text())){
    $('span').addClass('red');
    }else{
    $('span').addClass('green');
    }
    });


всем элементам добавляется класс red если хоть в одном есть -

danik.js 24.01.2014 14:47

Цитата:

Сообщение от housewm
но не могу понять как он работает

http://api.jquery.com/each
Цитата:

Сообщение от housewm
знаки определяю через регулярные выражения

Почему не parseFloat() < 0 ?

housewm 24.01.2014 14:47

спасибо, :)

ksa 24.01.2014 14:48

Цитата:

Сообщение от housewm
всем элементам добавляется класс red если хоть в одном есть -

Так ты так и написал! :D
Используй this вместо
$('span')
внутри
obj.each();

danik.js 24.01.2014 14:48

Цитата:

Сообщение от ksa
danik.jsа на тебя нет!

:lol:
Ну хоть не «a» или «c» ...

ksa 24.01.2014 14:50

:D

danik.js 24.01.2014 14:51

Цитата:

Сообщение от housewm
$('span').

Функция $ (да, это функция с таким вот именем, если вдруг не вкурсе) возвращает коллекцию элементов, соответствующих селектору. Таким образом ты окрашиваешь все span'ы на странице разом. Причем делаешь ты это при каждой итерации each. В результате если у тебя есть хоть один спан с минусом, и хоть один с плюсом - то у всех span'ов в результате будут оба класса - red и green. Неужели это трудно понять?


Часовой пояс GMT +3, время: 13:07.