带值的参数通过 URL 来找我,我将其写入paramsURL[]数组。
然后我需要将传入的数据设置为选择的值。
$('select[name="brand"]').val(paramsURL['brand']); // этот select сгенерирован динамически. Поэтому jQ не может записать для него значение
问题: 为动态生成的元素设置值的正确方法是什么?
整个代码:
// 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мс
}
}
});
这是另一个触发器 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);
}
});
});
第二个
select
-a 的值必须在异步填充后设置。