У меня есть таблица, в которой есть ряд элементов. Я зарегистрировал некоторые обработчики событий и добавляю эти элементы динамически, добавляя новые html.
Все работает для исходных элементов, но когда я добавляю новый (динамически создаваемый элемент) и запускаю одно из вновь созданных событий обработчики страницы, кажется, заставляют перезагрузить, и я теряю все мои данные / контент.
Вот упрощенная версия:
<table id="asset-table" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr class="asset-row">
<td align="center" style="padding-bottom: 32px;">
<form id="asset-title" class="asset-title">
<input type="text" placeholder="Add Asset Title Here ..." id="title-input1" />
<input id="title-submit" class="submit" type="submit">
</form>
<p id="asset-title-replacement" style="text-align: center; display: none;"><strong></strong></p>
</td>
</tr>
</table>
<button id="add-asset-button">Add Asset</button>
EventHandler
// asset title load
$('#asset-table').on("submit", '.asset-title', function (event) {
event.preventDefault();
console.log("asset-title");
let text = $(this).find('#title-input1').val();
let td = $(this).children().first()
td.find('.asset-title').hide();
td.find('.asset-title').next('p').text(function () {
return text
}).css("font-weight", "Bold");
td.find('.asset-title').next('p').show()
});
Добавить новый элемент:
$('#add-asset-button').click(function () {
console.log("adding asset");
$('#asset-table').append("<tr class='asset-row'><td align='center' style='padding-bottom: 32px;'><form id='asset-title' class='asset-title'><input type='text' placeholder='Add Asset Title Here ...' id='title-input1' /><input id='title-submit' class='submit' type='submit'></form><p id='asset-title-replacement' style='text-align: center; display: none;'><strong></strong></p>/td></tr>")
})
Таким образом, при динамическом добавлении элемента все идет по плану, как только я взаимодействую с добавлением нового «заголовка» и нажимаю кнопку «Отправить», страница перезагружается, и я теряю все «состояние» и содержимое ранее обрабатывались.
Проблема, с которой я столкнулся, заключается в том, что eventHandler привязан к # asset-table, поэтому, когда создается динамический c элемент, ключевое слово «this» привязывается к элемент # asset-table, так как я могу указать, с кем я работаю для этого события ??