如何解决每次调用后如何删除addEventListener
我有两种下拉菜单,我想从选定的下拉菜单中选择一项,然后将其附加到列表中。第一次单击下拉按钮并从中选择项目后,每次单击都会返回列表上重复的附件。
document.querySelector('.selected-items').addEventListener('click',e => {
const overlay = document.querySelector('.hidden-overlays-select')
const button = e.target.classList.contains('select-option')
rect = e.target.parentElement.getBoundingClientRect()
row = e.target.parentElement;
addItem(row);
overlay.style.display = 'inline-block'
overlay.style.top = Math.round(rect.top) + 'px';
overlay.style.left = Math.round(rect.left) + 'px';
});
addItem = (row) => {
document.querySelectorAll('.dropdown-list .list').forEach(list =>
list.addEventListener('click',e => {
let option = e.target.classList.contains('list');
option = e.target.textContent;
if (option) {
const li = `
<li class="select-option" style="margin-right: 1rem;">
${option}
</li>`;
row.insertAdjacentHTML("beforeend",li)
}
document.querySelector('.hidden-overlays-select').style.display = 'none'
}));
}
li {
cursor: pointer;
list-style: none;
}
.hidden-overlays-select {
position: absolute;
display: none;
margin-top: .5rem;
}
<div class="hidden-overlays-select">
<ul class="dropdown-list">
<li class="list">Test One</li>
<li class="list">Test Two</li>
<li class="list">Test Three</li>
<li class="list">Test Four</li>
</ul>
<ul class="dropdown-list">
<li class="list">Test One</li>
<li class="list">Test Two</li>
<li class="list">Test Three</li>
<li class="list">Test Four</li>
</ul>
</div>
<div class="selected-items d-flex align-items-center flex-fill">
<ul style="display: flex;">
<li class="select-option" style="margin-right: 1rem;">
Click Me
</li>
</ul>
</div>
这是示例代码,我确实在谷歌和堆栈上都进行了谷歌搜索,但是没有遇到同样的问题
解决方法
只需使用类来引用列表中的每个元素(例如:下拉列表),这是一个可行的解决方案:
my_list = [ "hello",2,2.5,False ]
def revList( TheList ):
Rev_List = TheList.reverse()
return Rev_List
my_list_rev = revList(my_list)
print(my_list_rev)
document.querySelector('.selected-items').addEventListener('click',e => {
const overlay = document.querySelector('.hidden-overlays-select')
const button = e.target.classList.contains('select-option')
rect = e.target.parentElement.getBoundingClientRect()
row = e.target.parentElement;
overlay.style.display = 'inline-block'
overlay.style.top = Math.round(rect.top) + 'px';
overlay.style.left = Math.round(rect.left) + 'px';
});
const el = document.querySelectorAll('.dropdown-list');
el.forEach(function(item,index){
item.addEventListener('click',function (e) {
var option = e.target.textContent;
if (option) {
const li = `
<li class="select-option" style="margin-right: 1rem;">
${option}
</li>`;
row.insertAdjacentHTML("beforeend",li);
}
document.querySelector('.hidden-overlays-select').style.display = 'none';
});
});
li {
cursor: pointer;
list-style: none;
}
.hidden-overlays-select {
position: absolute;
display: none;
margin-top: .5rem;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。