Through the URL, parameters come to me with values that I write to the paramsURL [] array.
Then I need to set the incoming data as value for select.
$('select[name="brand"]').val(paramsURL['brand']); // этот select сгенерирован динамически. Поэтому jQ не может записать для него значение Question: How to set the value for a dynamically generated element?
All code:
// Loading values to filter form $('#filterName').on('click', function () { // при клике на блок if (paramsURL['mtype'] > 0) { // проверяем есть ли значение для этого типа $('select[name="mtype"]').val(paramsURL['mtype']).trigger('change'); // задаем его из массива и устанавливаем триггер change. Здесь работает на Отлично! Потому, что это статически создаваемый select if (paramsURL['brand'] > 0) { // тоже самое с brand setTimeout(function() { // сделал костыль через setTimeout $('select[name="brand"]').val(paramsURL['brand']).trigger('change'); }, 5); // который сработает через 5мс } } }); Here's another job trigger trigger ('change');
$('select[name="mtype"]').change(function () { $.ajax({ url: '/api/catalog/filter/brands?idtype=' +$('select[name="mtype"]').val(), method: 'GET', dataType: 'json', contentType: "application/json;charset=UTF-8", success: function (data) { var brand = $('select[name="brand"]'); brand.empty(); brand.append('<option selected disabled hidden>Марка</option>'); brand.removeClass('mark'); $.each(data, function(key, val){ brand.append('<option value="' +key+ '">' +val+ '</option>'); }); }, error: function(request, status, error) { var statusCode = request.status; console.log(statusCode); } }); });