Tengo un problema con la iteración en jquery que no entiendo. Agarro todos los elementos select2 que han dado nombre e intento agregar una nueva opción:
var newOption = new Option(model.nazwa, model.id, false, false); $('select[name="grupa_cechy_id"]').each(function () { $(this).append(newOption).trigger('change'); //check the loop works let idx = $(this).attr('id'); console.log(idx); });El ciclo funciona, pero solo el último elemento select2 del ciclo obtiene una nueva opción. ¿Cómo arreglar eso?
Los elementos DOM solo pueden tener un solo padre. Lo que en realidad estás haciendo es intentar agregar el elemento a múltiples padres, lo que efectivamente solo lo mueve en el DOM. Por lo tanto, se moverá continuamente hasta el último elemento del bucle, cuando ya no se agregue a ningún otro elemento.
Debe refactorizar su código y crear una nueva opción cada vez que se itera el ciclo, de la siguiente manera:
$('select[name="grupa_cechy_id"]').each(function () { const newOption = new Option(model.nazwa, model.id, false, false); $(this).append(newOption).trigger('change'); });