На сайте есть AJAX фильтр простой, по CHANGE SELECT выбирает из базы по условию нужные строки, тут порядок. Беда в персонализации. Каждая форма обрабатывается отдельно, но беда в том, что response вставляется всегда первой формы. Даже если мы взаимодействуем со второй.
Вот пример одной из форм (второй формы). После AJAX ответа данные загружаются в свой ajax-container, но html ajax-item вставляет ТОЛЬКО ПЕРВОЙ формы :( как заставить ajax-item использовать свой для каждой из форм?
<div class="parent">
<form id="ajax-form2" class="ajax-form">
<select name="date">
<option value="0" selected="">All</option>
<option value="2018">2018</option>
<option value="2017">2017</option>
<option value="2019">2019</option>
</select>
</form>
<div class="ajax-container">
<div class="ajax-item">2019-09</div>
<div class="ajax-item">2018-09</div>
<div class="ajax-item">2017-09</div>
</div>
</div>
А вот AJAX скрип, который пробегает по формам, и отправляет данные нужной формы
$(function() {
$.fn.forms = function (o) {
return this.each(function () {
var th = $(this),
_ = th.data('forms') || {
submitFu: function () {
$.ajax({
data: _.form.serialize(),
beforeSend: function(){
}
}).done(function(response) {
var $response = $(response)
_.form.parent().find('.ajax-container').fadeOut(200)
setTimeout(function() {
_.form.parent().find('.ajax-container').html($response.find('.ajax-container').html()).fadeIn(200)
}, 200)
console.log(_.form.serialize())
})
},
init: function () {
_.form = _.me
_.form
.bind('change', function () {
_.submitFu()
})
}
}
_.me || _.init(_.me = th.data({
forms: _
}))
typeof o == 'object' && $.extend(_, o)
})
}
$('#ajax-form1').forms()
$('#ajax-form2').forms()
});