javascript - 如何为多个元素添加事件监听器?
问题描述
我有一个包含 5 个输入字段的页面。如何在它们上添加一个模糊事件侦听器?
我尝试时遇到错误
document.querySelectorAll('input').addEventListener('blur', e => {
console.log('blur on input')
})
编辑 1
我可以像这样将 eventListeners 添加到单个项目中,
const allInputs = [...document.getElementsByTagName('input')]
allInputs.forEach(item => item.addEventListener('blur', (e) => console.log('blur') ))
但是有没有办法在 HTMLCollection 上添加一个集体事件监听器?
解决方案
这将起作用。将事件侦听器添加到文档并在事件冒泡时捕获目标。
document.addEventListener("focusout",function(event){
if(event.target instanceof HTMLInputElement) //can also be used as elem.target.tagName.toLowerCase()=="input"
{
console.log("Using focusout : "+event.target.id);
event.preventDefault();
}
});
document.addEventListener("blur",function(event){
if(event.target instanceof HTMLInputElement) //can also be used as elem.target.tagName.toLowerCase()=="input"
{
console.log("Using blur : "+event.target.id);
event.preventDefault();
}
},true);
<input id="1">
<input id="2">
<input id="3">
<input id="4">
<input id="5">
true
在blur
事件是使它泡沫。
请参阅这篇不错的文章以获取更多信息。
推荐阅读
- php - PHP - 遍历嵌套数组并增加 foreach
- java - 等待接收数据而不阻塞ui线程蓝牙android
- mysql - ABS() 的 SQL 顺序
- json - Flutter does not read the name of the Json matrix
- laravel - Laravel - 如何在 DB Raw 中按下拉菜单过滤
- python - strptime 格式不匹配,即使它看起来正确?
- .net - how to get a date of next month
- batch-file - Iterate Key values in Batch
- azure-devops - How to pass a parameter to Azure DevOps Build queue action created in Microsoft Power Automate?
- vue.js - 如何在 vuetify 文本字段中设置密码确认规则