Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   remove по индексам (https://javascript.ru/forum/jquery/22484-remove-po-indeksam.html)

Viper 21.10.2011 17:12

remove по индексам
 
Собстно есть массив индексов элементов к примеру
options.elems_indexes = [0,2,4]


далее
for (var i=0; i<options.elems_indexes.length; i++) {
	$('.ui-message').eq(options.elems_indexes[i]).remove();
}


Проблема в том что при удалении первого элемента у следующего элемента в DOM индекс уменьшается на кол-во удаленных элементов. Соответственно в первом проходе массив индексов уже должен быть [1,3]. При втором [0].

Как можно обойти данную граблю?

Black_Prince 21.10.2011 17:50

попробуйте так, возможно это решит Вашу проблему.
for (var i=0; i<options.elems_indexes.length; i++) {
    $('.ui-message').eq(options.elems_indexes[i] - i).remove();
}

walik 21.10.2011 17:54

$('.ui-message').filter(function(i) {
  return options.elems_indexes.indexOf(i) != -1;
}).remove();

DjDiablo 21.10.2011 18:48

Ну и мой велосипед, что бы до кучи было))

var dat=$('.ui-message').toArray();

for (var i=0; i<options.elems_indexes.length; i++) {   
   $(dat[options.elems_indexes[i]]).remove();
   //dat[options.elems_indexes[i]].remove();//или может так, чо то непомню :)
}

Viper 21.10.2011 22:44

Всем спасибо. Все работавает.
Выбрал код walik как более элегантный )

DjDiablo
$(dat[options.elems_indexes[i]]).remove();
;)


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