@d_h_o_l

Как изменить значение в таблице которая генерируется через json файл?

Добрый день, у меня есть js функция которая превращает тег в инпут и при изменении значения сохраняет новое значение в DOM дерево, со статичными таблицами все работает,но если выводить таблицу через json файл, то функция не работает, в чем может быть проблема?
Код функции:
$(function()	{
    $('td').click(function(e)	{
        //ловим элемент, по которому кликнули
        var t = e.target || e.srcElement;
        //получаем название тега
        var elm_name = t.tagName.toLowerCase();
        //если это инпут - ничего не делаем
        if(elm_name == 'input')	{return false;}
        var val = $(this).html();
        var code = '<input type="text" id="edit" value="'+val+'" />';
        $(this).empty().append(code);
        $('#edit').focus();
        $('#edit').blur(function()	{
            var val = $(this).val();<code lang="javascript">
            $(this).parent().empty().html(val);
        });
    });
});

//Код генерации таблицы из json
function printMessage(destination) {
    $(destination).removeClass();
    $(destination).text('');
    $.getJSON('admin-panel/json/table_users.json', function(data) {
            if (data != undefined){
                $(destination).text('');
                for (var i in data) {
                    var row = data[i];
                    if(row.subscription == 1){
                        row.subscription = "Подписка оформлена";
                    }
                    else row.subscription = "Подписка не оформлена";
                    $('#json_users').append('<tr> <th width="20px"> ' +
                        '<label class="btn btn-default btn-xs checkbox-inline"> <input type="checkbox" hidden name="users_table[]" id="table_users_id_'
                        +row.id + '" value="'+row.id+'"> <span class="users-table-ch"><i class="fa fa-check"></i></span></label></th> <th class="id_users">'
                        +row.id+'</th><td>'
                        +row.login+'</td> <td>'
                        +row.email+'</td> <td>'
                        +row.subscription+'</td><td>'
                        +row.join_date+'</td><td>'
                        +row.access_rights+'</td></tr>');
                }
            }
            else $(destination).text('');
        }
    );
}
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что вызов .click() просто вешает обработчик на уже имеющиеся в DOM ноды. Если вы после этого создаёте новые ноды, то на них обработчика нет. Используйте всплытие
$('#json_users').on('click', 'td', function() { ... });
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы