Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 事件委派--列出具有自己子项的项_Javascript_Performance - Fatal编程技术网

Javascript 事件委派--列出具有自己子项的项

Javascript 事件委派--列出具有自己子项的项,javascript,performance,Javascript,Performance,我有一份物品清单。我想使用事件委派将单击事件绑定到列表,而不是绑定到每个单独的项目。我使用下面的代码成功地做到了这一点 document.getElementById('list').addEventListener('click', function(e) { if(e.target.nodeName === 'LI') { doTheWork(); } }); 太好了。但是,我的列表项是其他节点的父节点,当我单击这些节点时,我永远无法调用doTheWork,

我有一份物品清单。我想使用事件委派将单击事件绑定到列表,而不是绑定到每个单独的项目。我使用下面的代码成功地做到了这一点

document.getElementById('list').addEventListener('click', function(e) {
    if(e.target.nodeName === 'LI') {
        doTheWork();
    }
});
太好了。但是,我的列表项是其他节点的父节点,当我单击这些节点时,我永远无法调用doTheWork,因为目标不是li

<ul id="list">
    <li>
        <h3>Title</h3>
    </li>
    <li>...
</ul> 
  • 标题
  • 。。。
如何在不将事件绑定到每个项目本身的情况下处理对具有子项的列表项目的单击?例如,如果我的列表项有一个标题,当用户在技术上单击标题标记时,我如何捕捉列表项上的单击事件

您可以设置为
none

元素永远不是鼠标事件的核心;但是,鼠标事件 可以将其子代元素作为目标,如果这些子代具有 指针事件设置为其他值

#list>li*{
指针事件:无;
}
document.getElementById('list').addEventListener('click',函数(e){
if(e.target.nodeName.toLowerCase()='li'){
console.log(如target);
}
});
#list>li*{
指针事件:无;
}
  • 标题

当你说你的列表项时,是不是比
  • s?我建议
    e.target.nodeName.toLowerCase()===“li”
    也能在XHTML中工作。你必须检查事件目标的所有父级!那很有效!你知道一种方法可以使IE<11正常工作吗?