【发布时间】:2015-04-28 19:27:00
【问题描述】:
我有以下(简化的)标记代码:
<div id="container">
<div data-value="1">
<span>Click me 1</span>
</div>
<div data-value="2">
<span>Click me 2</span>
</div>
</div>
<div id="messages"></div>
我想通过仅在#container 上附加一个事件侦听器来利用冒泡,并获取点击的孩子的data-value。
document.getElementById('container').addEventListener('click', function(e){
document.getElementById('messages').innerHTML = 'you clicked ' + e.target.dataset.value;
}, false);
如果点击区域是div 区域(小提琴中的红色区域),一切正常。当单击来自具有数据值的 div 的子项(例如单击蓝色跨度)而不更改事件侦听器时,如何获得 data-value?
【问题讨论】:
-
e.target.parentNode.dataset.value;- 如果你点击跨度。 -
对,但这只是一个例子,带有数据值的 div 内的标记结构可能会改变 - 也有更多(大)子代
标签: javascript dom-events event-bubbling