Hi all, I'm having a devil of a time removing options from a select. Here's the scenario:
I have one <select> that when an item is chosen, that item will be removed from all the other <select>s containing the same data: <select onchange="update_feat_sub_selection(chardata, 75, 0)" id="feat_75_multi_0"> <option value="0" id="feat_75_multi_0_option_0">Axe, Orc double</ option> <option value="1" id="feat_75_multi_0_option_1" selected='true'>Axe, throwing</option> <option value="2" id="feat_75_multi_0_option_2">Battleaxe</ option> ... </select> <select onchange="update_feat_sub_selection(chardata, 75, 1)" id="feat_75_multi_1"> <option value="0" id="feat_75_multi_1_option_0">Axe, Orc double</ option> <option value="1" id="feat_75_multi_1_option_1">Axe, throwing</ option> <option value="2" id="feat_75_multi_1_option_2">Battleaxe</ option> ... </select> So in this case I want "Axe, throwing" removed from the second select. Because there can be multiple select instances, I have to iter over each of them and remove all the selected items any time any one of them changes. My (non-working) idea was to: 1) create a new select containing all items, 2) replace the current select, and 3) use the texotela (http://www.texotela.co.uk/code/jquery/select/) plugin to remove the options that match values stored in an array: function update_feat_sub_selection(chardata, feat_id, multi_idx) { var weapon_id = $('select#feat_' + feat_id + '_multi_' + multi_idx).val(); var row = chardata.feats.first( { feat_id : feat_id }); row.weapons[multi_idx] = weapon_id; chardata.feats.update(row, { feat_id : feat_id }); sav(chardata); // remove the changed weapon from the lists of all other weapons $("select[id^='feat_" + feat_id + "_multi_']").each(function (x, select) { // skip this one (obviously if ($(this).attr('id') != 'feat_' + feat_id + '_multi_' + multi_idx) { feat = feats.first({ id: feat_id }); rebuilt_select = create_multi_feat_weapon_selector(feat, x); // replace the old select with the new one with the full suite of weapons $('tr#feat_' + feat_id + '_multi_' + x).replaceWith (rebuilt_select); $(this).attr('value', selected_weapon_id); // remove already selected weapons from the new listing char_feat = chardata.feats.first({ feat_id: feat_id }); $('select#feat_' + feat_id + '_multi_' + x).removeOption (char_feat.weapons); } }); } My <tr> is getting replaced correctly, but no options are removed. I've been round the horn on this one, I'll take any suggestions. Thanks, Todd