Динамически созданный элемент и событие

0

Я хочу знать, как добавить событие в динамически созданный элемент. он отлично работает для первой строки, но необходимо привязать SplitSelectValue к следующей сгенерированной строке.

$('#SelID_').change(function () {
SplitSelectValue($(this));
});

function SplitSelectValue () {
var data =$("#SelID_ option:selected").val();   
var arr = data.split('|');
$("#SelVala_").val(arr[0]);
$("#SelValb_").val(arr[1]);
$("#SelValc_").val(arr[2]);
}

См. Jsfiddle

Обновленная скрипка с двумя разными таблицами

  • 4
    идентификатор должен быть уникальным ..
Теги:

2 ответа

0
Лучший ответ

что вам нужно,

  1. Event-делегация
  2. Атрибут начинается с выбора
  3. Терпение исправить ошибки

Пытаться,

$(document).on('change', '[id^="SelID_"]', function () {
    SplitSelectValue($(this));
});

function SplitSelectValue(obj) {
    var data = obj.find("option:selected").val();
    var arr = data.split('|');
    var tr = obj.closest('tr');
    tr.find("[id^='SelVala_']").val(arr[0]);
    tr.find("[id^='SelValb_']").val(arr[1]);
    tr.find("[id^='SelValc_']").val(arr[2]);
}

DEMO

  • 0
    он отлично работает для строки в той же таблице, но что, если я создаю строку в другой таблице обновленной скрипки
0

использование мероприятия - делегирование

$(document).on('change', '#SelID_', function () {
SplitSelectValue($(this));
});

вместо ID лучше использовать селектор классов (идентификатор должен быть уникальным на странице, иначе - генерировать динамический идентификатор)

  • 1
    если вы прочитаете код в Jsfiddle, то увидите, что идентификатор генерируется динамически. Поэтому я думаю, что мне нужно использовать функцию (событие) и счетчик.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню