Javascript 带mouseEvent的Div,带mouse事件的子Div-单击outer Div,激发两个事件

Javascript 带mouseEvent的Div,带mouse事件的子Div-单击outer Div,激发两个事件,javascript,Javascript,假设我有一个女A,还有一个孩子女B。两者都指定了鼠标单击。我如何才能单击分区A,并触发分区A和分区B的事件?我已经调查过事件冒泡,但我所有的尝试都失败了 我正在分配鼠标事件,如下所示: elem.addEventListener( 'click', myResponseFunction, true ); 我尝试将冒泡设置为true和false,但都没有成功。这可能吗?请不要使用jQuery解决方案 进一步澄清: 考虑一个可扩展的广告,其折叠部分可以是视频,也可以是概要,由数据提供者在运行时确定

假设我有一个女A,还有一个孩子女B。两者都指定了鼠标单击。我如何才能单击分区A,并触发分区A分区B的事件?我已经调查过事件冒泡,但我所有的尝试都失败了

我正在分配鼠标事件,如下所示:

elem.addEventListener( 'click', myResponseFunction, true );
我尝试将冒泡设置为true和false,但都没有成功。这可能吗?请不要使用jQuery解决方案

进一步澄清:


考虑一个可扩展的广告,其折叠部分可以是视频,也可以是概要,由数据提供者在运行时确定。我希望广告在折叠部分的任何位置单击时展开,但如果“查看视频”按钮或“查看摘要”按钮位于单击展开按钮下方,我希望广告在展开后前进到相应的视图。如果可能的话,我希望有一种更干净的方法,而不是在每个互动程序的CalltoAction按钮上放置expand操作。每个磁贴都是一个具有背景图像和“调用操作”按钮的div,所有这些按钮都由“单击展开”按钮覆盖。

单击事件仅在鼠标/触摸指针下的元素上触发

冒泡(up)意味着一旦子元素处理了一个click事件,它就会在其父元素上触发另一个相同类型的事件。此过程一直重复到
文档
元素。你想要的是沸腾下来。不幸的是,JavaScript中不存在这个概念

一个实用的解决方案是迭代所有子节点,并在单击父节点时手动触发单击事件。这会有一个副作用:默认情况下,鼠标事件会出现气泡,因此当单击子节点时,它的父节点也会收到一个单击事件。这可以通过在子click事件处理程序中进一步停止事件传播来轻松解决

以下是完整的示例:

document.querySelector('.parent').addEventListener('click',函数(e){
log('hello from parent');
var children=this.children;
[]forEach.call(子项、函数(元素){
元素单击();
});
});
document.querySelector('.child').addEventListener('click',函数(e){
e、 停止传播();
log('hello from child');
});
.parent{
高度:300px;
宽度:400px;
背景颜色:浅蓝色;
}
.孩子{
位置:相对位置;
顶部:100px;
左:100px;
高度:100px;
宽度:200px;
背景颜色:浅黄色;
}


嗯,如果你点击一个按钮,它的孩子就不会有气泡了,因为气泡是通过父母传播的,而不是通过孩子传播的……我曾经听到过一个明智的评论。当你以“嗯”开头一句话时,你就推断出一种优越感。很明显,我之所以问这个问题,是因为我对这个话题不太熟悉,无法解决我的问题,所以你的恶作剧相当令人讨厌。我猜有人和你一样的超人一定从来没有问过问题。沃泽,冷静点。对我来说,你想做什么听起来像是想避开一只虫子。为什么需要单击子元素?这是相当复杂的,因为在父函数的onclick函数中,需要检查单击是否在子函数中启动,这样它就不会导致无限循环。你需要学习如何触发事件,以便找到更好的编码方式,这样你就不必点击孩子们。对不起,这已经是一周70多个小时了,我仍在办公桌旁,我的耐心现在有点挑战。考虑在可折叠的部分中具有可扩展广告的广告,其可以是视频或概要,在运行时从数据提供者确定。我希望广告在折叠部分的任何位置单击时展开,但如果“查看视频”按钮或“查看摘要”按钮位于单击展开按钮下方,我希望广告在展开后前进到相应的视图。如果可能的话,我希望有一个更干净的方法,而不是在每个互动程序的“行动要求”按钮上添加“展开”操作。考虑到我更新的问题,你觉得这种方法对我有效吗?我仍在努力思考如何将其应用到现有代码中。是的,这种方法仍然有效。您需要向click事件中添加更多内容才能使其正常工作。如果您添加一个示例HTML布局,我可能会进一步帮助您使用JS代码