Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Массив из значений eq() (https://javascript.ru/forum/jquery/22258-massiv-iz-znachenijj-eq.html)

andreysolo 12.10.2011 17:54

Массив из значений eq()
 
Делаю выборку нескольких элементов по их номеру в DOM и выделяю их цветом.
$('path').eq(12).attr('fill', '#52BAED');
$('path').eq(12).attr('fill', '#52BAED');
$('path').eq(13).attr('fill', '#52BAED');
$('path').eq(0).attr('fill', '#52BAED');
$('path').eq(18).attr('fill', '#52BAED');
$('path').eq(38).attr('fill', '#52BAED');


Если их количество увеличивается, получается не очень удобно.
Как можно все организовать с помощью массива?

DjDiablo 12.10.2011 19:16

Как-то так наверное.

var select=[12,13,0,18];
for (var i in select) $('path').eq(i).attr('fill', '#52BAED');


Поправленная версия. Типо так быстрее.
var select=[12,13,0,18];
var path=$('path');
for (var i in select) path.eq(i).attr('fill', '#52BAED');

andreysolo 13.10.2011 11:29

Элементы теперь определяются некорректно
http://scriptology.ru/map/

DjDiablo 14.10.2011 14:19

Это я ступил))
Вот так должно работать.

var select=[12,13,0,18];
var path=$('path');
for (var i=0;i<path.length;i++) path.eq(select[i]).attr('fill', '#52BAED');

Sweet 14.10.2011 15:06

Как насчет использовать filter:
var select = [ 12, 13, 0, 18 ];
$('path').filter( handler ).attr('fill', '#52BAED');

function handler( index ){
  return select.indexOf( index ) != -1;
};

andreysolo 14.10.2011 16:07

Способ с for работает) Спасибо!
Вот что получается http://scriptology.ru/map/


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