Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   списки в динамических таблицах (https://javascript.ru/forum/dom-window/71684-spiski-v-dinamicheskikh-tablicakh.html)

maksqwerty 05.12.2017 13:22

списки в динамических таблицах
 
Ранее у меня были вопросы по ajax https://javascript.ru/forum/ajax/715...taet-post.html
Так как этот вопрос решился, возникли новые.
У меня в динамической таблице есть 2 списка.
При клике в таблицу добавляются новые поля , как и эти два списка.
Если в первом поле таблицы у элементов
id = "test1"

То в следующем поле
id = "test2"

Далее
id = "test3"
, и так далее.
Изменяется только ИД, класс тот же.
Когда добавил ajax запрос, всё работает нормально,
но вот когда добавляю новые поля в таблицу, то у списков там "стандартное значение"
И когда я выбираю нужное значение в новосозданном списке, то значения меняются и в других, связанных с этим списками.
Что нужно?
Что бы у новосозданных списках значение было такое же, как у предыдущего списка (если у списка с
id = "spisok1"
, то у списка с
id = "spisok2"
было такое же значение)
Это я попытался сделать так (через общий класс)
$(function () {
    var select = $('select.fertig');
    select.on('change', function () {
        select.not(this).val(this.value);
    });
})

Но оно, почему то, не работает.
И было бы хорошо, если б у этих списков был б только этот выбранный вариант, а других бы не было видно, но я не знаю, как это реализовать:-?
Всё, что нужно, что бы у всех списков определенного класса значение было такое же, как у первого списка этого же класса

рони 05.12.2017 14:00

maksqwerty,
$(function () {
    var table = $('table');
    table.on('change', 'select.fertig', function () {
        $('select.fertig').not(this).val(this.value);
    });
})

maksqwerty 05.12.2017 14:37

Работает, и это уже хорошо, но работает не совсем так, как нужно
оно меняет значение, только когда я уже добавил новые поля,
а нужно, что бы как только я добавил поле, а значение списка уже было изменено на нужное
(тут наверное нужно присвоить event пока не существующим элементам, но как это сделать, я не знаю)
А ещё, вопрос: почему нужно прописывать table, разве без этого скрипт не видит нужных элементов?

рони 05.12.2017 15:03

maksqwerty,
скрипты не телепаты, они не знают что вы захотите добавить, но есть делегирование
родитель следит за изменениями внутри себя.
строка 3 это "делегирование" в jquery.
Цитата:

Сообщение от maksqwerty
что бы как только я добавил поле, а значение списка уже было изменено на нужное

- это не понимаю, при создании селекта установите нужное вам значение, или после создания возможно так
$('select.fertig:first').trigger('change')

maksqwerty 05.12.2017 15:19

у меня значения селекта приходят с бд
как бы это сказать, мне нужно, что бы скрипт смотрел, какое значение у первого элемента, и менял значение списков, которые будут создаваться, на нужное, и при этом удалял другие варианты.
Спасибо за делегирование, буду вкуривать.
Эта строка, что вы написали, это пример делегации?

рони 05.12.2017 15:24

maksqwerty,
ответ написан ранее :)

maksqwerty 05.12.2017 15:27

Окей, куда тогда мне втыкнуть строчку с делегацией в выше написаный вами скрипт, шобыработало?:)

рони 05.12.2017 15:31

Цитата:

Сообщение от maksqwerty
Окей, куда тогда мне втыкнуть строчку с делегацией в выше написаный вами скрипт, шобыработало?

не понимаю, о чём вы

maksqwerty 05.12.2017 15:41

Ну как сделать этот скрипт с делегированием,
Цитата:

что бы как только я добавил поле, а значение списка уже было изменено на нужное
Цитата:

- это не понимаю, при создании селекта установите нужное вам значение, или после создания возможно так
$('select.fertig:first').trigger('change')
Цитата:

$(function () {
var table = $('table');
table.on('change', 'select.fertig', function () {
$('select.fertig').not(this).val(this.value);
});
})

рони 05.12.2017 15:43

maksqwerty,
где код создания нового селекта?


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