【发布时间】:2021-06-11 00:18:05
【问题描述】:
当用户单击父 li 中的任意位置时,我需要选中一个单选按钮。 ul 在原始 html 中,但 li 和单选按钮在下面的函数内的 for 循环中呈现给 DOM (displaySearchResults(responseJson)。
无法对特定单击的 li 的单选按钮应用任何更改(有时能够更改所有单选按钮)——使用 this 关键字或各种类/id/元素组合来定位点击li。
这是事件监听器,后面是相关代码。
这绝对是一场噩梦,感谢任何帮助。谢谢!
事件监听器
function select(){
$('.results-list-item').click(event => {
let name = $(this)
console.log('li click')
//various attempts at marking the child radio button as checked
//$(this).closest($('input')).prop("checked", true)
//$(this).children($('input')).attr('checked','true')
$('.results-list-item').children($('input.radio')).attr('checked','')
})
};
显示
function displaySearchResults(responseJson) {
for (let i = 0; i < 10; i++){
$('#results-list').append(
`
<li class='results-list-item'>
<h3>${results[i].name}</h3>
<input type='radio' id='${results[i].name}' value='${responseJson.results[i].id}' required>
</li>
`
)
}
select()
}
HTML
<main class='container'>
<section id='results'>
<form id='js-results-form'>
<ul id='results-list'>
</ul>
<input type='submit' value='Select Game'></input>
</form>
</section>
</main>
【问题讨论】:
-
谢谢!切换到 .on() 解决了这个问题。以前在堆栈溢出时解决了,但我只是没有意识到如何找到答案。
标签: javascript jquery dom jquery-selectors radio