检查是否单击任何子元素
check for click on any child element
我想提交一个表单与JavaScript一旦任何子元素的特定无序列表被点击。
代码可能看起来像这样,但是列表项的数量可能会变得很长。
<ul id="myList">
<li id="myListItem1">list item 1</li>
<li id="myListItem2">list item 2</li>
<li id="myListItem3">list item 3</li>
</ul>
不可能在每个li中添加一个onclick。此外,我可能无法将代码附加到ul标签,所以如果有可能在不将代码附加到ul标签的情况下解决,那将是最好的。不幸的是,像jquery、mootools等库可能不会被使用。UL的id将始终是已知的和静态的,但LI的id将是未知的,因为它们的数量可能不同。
您可以使用如下代码轻松地做到这一点:
var childNodeArray = document.getElementById('myList').childNodes;
这将给你一个元素数组,你可以添加点击监听器,例如
for(var node in childNodeArray){
node.onclick = function () { alert('here'); };
}
答案已经存在:
如何从.childNodes方法返回的集合中获取元素
如何钩到页面宽点击事件?
正确绑定javascript事件
您还可以使用事件委托,而不是像nimmonet的回答中建议的那样为每个单独的<li>
附加侦听器:
将单个事件监听器附加到父对象(本例中为<ul>
),然后检查event.target
的属性(即被点击的东西),以查看需要采取什么行动。
document.getElementById('myList')
.addEventListener('click', (event) => {
if (event.target.nodeName.toLowerCase() === 'li') {
console.log(event.target.textContent + ' clicked');
}
});
<ul id="myList">
<li id="myListItem1">list item 1</li>
<li id="myListItem2">list item 2</li>
<li id="myListItem3">list item 3</li>
</ul>
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 是否有任何可能的原因使我应该指定类型=“”;按钮“;用于我的按钮元素
- 任何一种简单的方法都可以将带有onload的元素作为目标
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 从dom中删除任何元素后,Touchmove事件停止触发
- Javascript集:任何覆盖元素之间比较的方法
- 制作 JavaScript 代码适用于任何元素
- jQuery:append()不是't在选择器中插入任何元素
- 为什么在ASP.NET Ajax更新面板中执行任何操作后javascript元素都停止工作
- 比较数组中的连续元素不会返回任何结果(javascript)
- 如何在呈现页面后使用 Java 脚本检测 dom 元素值的值是否有任何变化(例如,任何输入或复选框值更改)
- 如何在不使用任何 html 输入/搜索元素的情况下读取本地客户端文本文件
- 与任何元素的 .innerHTML 属性匹配的 JavaScript 正则表达式
- 没有任何 DOM 元素的 Aura 组件
- 当“不相关”的 html 选择元素没有选择任何选项时,如何退出 jQuery 事件
- 当我单击chrome的输入类型=搜索元素上的X时,是否触发了任何事件
- IOS自动化:有没有办法;刷新'元素树(或者Instruments'认为可以访问和不能访问的任何内容)
- 如果我只想从数组中打印任何一个元素.任何数组.那么代码会是什么
- 是否可以使用 Javascript 库测试 SVG 元素?任何其他选项