Я пытаюсь создать редактируемую таблицу для турнира, используя jQuery и ajax.
Текущая структура таблицы выглядит следующим образом:
<table>
<tr id="result-243">
<td class="name">Somebody</td>
<td class="score_1">9.0</td>
<td class="score_2">7.0</td>
<td class="score_3">7.8</td>
<td class="score_4">9.9</td>
<td class="score_5">7.9</td>
<td class="edit-243"><div id="edit-243" class="edit">Edit</div></td>
</tr>
</table>
Мне нужно вставить форму, когда нажата ссылка «Изменить».Эта форма будет заполнена значениями из текущей записи.Я могу сделать эту работу следующим образом:
$('.edit').click(function() {
result_id = $(this).attr('id').match(/[0-9]+/);
sel = '#result-' + result_id;
$.get(
myScript.ajax_url,
{
action:'getResults',
id:result_id,
nonce: myScript.nonce
},
function( response )
{
form = "<form id='save-" + result_id"' class='post-me'>";
for(value in response) {
form += "<input type='text' name = '" + value + "' value = '" + response[value] + "' />";
}
form += "<input type='submit' id='save-this' name='save' value='Save' /></form>";
$(sel).html(form);
}
);
});;
Я, очевидно, ожидал, что смогу связать форму с запросом $ .post (), и это должно опубликовать данные.Однако проблема, с которой я, похоже, сталкиваюсь, заключается в следующем:
Если я хочу восстановить предыдущие элементы таблицы (как указано выше) с новыми значениями, я не могу снова нажать «Изменить».Я думаю, это потому, что jQuery будет связывать события с элементами DOM, вставленными на лету, но только один раз.Я не могу удалить элементы, не потеряв привязку к событию.
Есть идеи, что не так с моим подходом к дизайну?