Вам потребуется повторно связать событие ajax из-за его повторного рендеринга DOM после завершения запроса ajax. Все эти элементы в #container
не являются виртуальной частью DOM, и ваше событие click работает только для уже существующих элементов.
Попробуйте это
Обернуть событие ajax в отдельную функцию
function ajaxEvent(data){
$.ajax({
url: '/myurl',
type: 'post',
dataType: 'json',
data: {data: data},
success: function (data) {
$('#container').html(data);
clickEvent(); //note this function attachment I added below
}
});
}
Вы можете перенести событие клика в функцию
function clickEvent(){
$('button').off('click');
$('button').on('click',function(){
ajaxEvent($(this).val());
});
}
Теперь JS выглядит как
<script>
$(function(){
clickEvent();
});
function ajaxEvent(data){
$.ajax({
url: '/myurl',
type: 'post',
dataType: 'json',
data: {data: data},
success: function (data) {
$('#container').html(data);
}
});
}
function clickEvent(){
$('button').off('click');
$('button').on('click',function(){
ajaxEvent($(this).val());
});
}
</script>
Также я вижу, что вы передаете ajax-данные как $('button').val()
, что неверно. Используйте тип ввода текста, если вы хотите отправить данные на сервер.