[英]how can you make li click dynamically when last was also created dynamically
The list was dynamically produced as follow;该列表是动态生成的,如下所示;
function addItemsToList(name, surname, location, town, userid, email) { var listEmployeesInfo=document.getElementById('mListHeader'); listEmployeesInfo.innerHTML='Province Retrieved: '+(location)+' | Town: '+(town); var ul=document.getElementById('list'); var header=document.createElement('h2'); var _name=document.createElement('li'); var _surname=document.createElement('li'); var _userid=document.createElement('li'); var _email=document.createElement('li'); _name.innerHTML='Name : '+name; _surname.innerHTML='Surname : '+surname; _userid.innerHTML='User ID : '+userid; _email.innerHTML='Email : '+email; ul.append(header); ul.appendChild(_name); ul.appendChild(_surname); ul.appendChild(_userid); ul.appendChild(_email); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="column right" style="overflow-y: auto; height: 500px; " id="listDiv"> <h3 id="mListHeader" style="padding-left: 10px;">Employee List Viewed</h3><br> <button id="btn-Update">Update</button> <ul class="empList" id="list"> </ul> </div>
How can I make li elements clicker-able?如何使 li 元素可以点击? because I want to able to update name, surname, id and email of clicked group?因为我想能够更新点击组的姓名、姓氏、ID 和电子邮件?
Use event delegation on the parent list在父列表上使用事件委托
var ul = document.getElementById('list');
ul.addEventListener('click', function(evt) {
var tgt = evt.target;
if (tgt.matches('li')) {
console.log(tgt.textContent);
}
});
so you capture the click event on the bubbling phase with only one event handler, no matter if the list-items are already in the document or if they have been dynamically created.所以你只用一个事件处理程序在冒泡阶段捕获点击事件,无论列表项是否已经在文档中或者它们是否已经动态创建。
As a side note you can't append a header as a child of a list ( ul.append(header);
)作为旁注,您不能将标题附加为列表的子项( ul.append(header);
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.