У меня есть ряд динамических <select>
элементов, которые генерируются на основе различных пользовательских данных. Я пытаюсь удалить некоторые <option>
, которые не применимы для каждого выбора, но jQuery, кажется, удаляет больше <option>
, чем его следует удалить на основе моего кода. Полный вариант использования будет трудно воспроизвести, поэтому я опубликую то, что вижу, и, надеюсь, этого будет достаточно, чтобы понять это.
Чтобы доказать себе, что я не сумасшедший, я решил добавить класс вместо удаления <option>
в цикле. Вот что я использовал:
$('.my-select').each(function(sourceIdx,sourceEl){
var id = $(sourceEl).attr('id');
var s = $('#'+id).parents('table').find('.some-input').val();
$(sourceEl).find('option[value="'+s+'"]').addClass('option-remove');
});
Вот сгенерированный источник:
<select class="my-select" id="1295453461993">
<option title="1" value="1">1</option>
<option title="2" value="2" class="option-remove">2</option>
<option title="3" value="3">3</option>
</select>
<select class="my-select" id="1295453475890">
<option title="1" value="1">1</option>
<option title="2" value="2">2</option>
<option title="3" value="3" class="option-remove">3</option>
</select>
Именно это я и ожидаю. Однако, когда я добавляю это сразу после цикла:
$('.option-remove').remove();
Я получаю это:
<select class="my-select" id="1295454051124">
<option title="1" value="1">1</option>
</select>
<select class="my-select" id="1295454058398">
<option title="1" value="1">1</option>
<option title="2" value="2">2</option>
</select>
Что заставляет меня говорить: «Подожди, ЧТО ?!». выглядит , что когда jQuery удаляет <option>
во втором выборе, он удаляет те же <option>
(значение = 3) из первого <select>
. Не круто.
Так что же я тут делаю не так?
Я тестирую в FireFox 3.5 (те же результаты в IE) с jQuery 1.4.4.