【发布时间】:2021-01-31 01:19:48
【问题描述】:
我正在处理一个表单,动态创建选择。所以我这样做了:
function populateSelect() {
$.ajax({
type: "GET",
url: URLSELECT + 'tipologia',
success: function (response) {
let key;
for (var k in response._embedded) {
key=k;
break
}
createSelect(response._embedded[key], "tipologia")
let options = $('select[name=tipologia]').find('option');
options.each((el)=>{
$(this).on('click', function(){
console.log($(this));
})
})
},
error: function(err){
console.log(err);
}
});
}
function createSelect(options, select) {
options.forEach((el)=>{
let text = el.name;
let option = document.createElement('option');
option.setAttribute('value', text);
option.textContent = text
option.addEventListener('click', function(e){
console.log('test);
})
document.querySelector(`[name=${select}]`).appendChild(option);
})
}
现在,如果我检查 HTML,选项会以正确的方式创建,具有正确的值和正确的文本,但 addEventListener 不起作用。
【问题讨论】:
-
据我所知
option不支持点击事件。您必须在select上使用onchange。 -
response._embedded[0]将比所有let key;和for循环逻辑更简单、更快。在 1 周期循环之后,key将始终等于0。 -
@JeremyThille 我试过但他给我一个错误,所以我找到了这个修复
-
@Lain 谢谢lain 我会试试的;)
-
response._embedded.shift()那么呢?
标签: javascript jquery createelement