Javascript 如何知道事件是否仍在冒泡?
我有一个带有一些嵌套元素的SVG元素。我在SVG元素上附加了一个Javascript 如何知道事件是否仍在冒泡?,javascript,html,event-bubbling,Javascript,Html,Event Bubbling,我有一个带有一些嵌套元素的SVG元素。我在SVG元素上附加了一个mouseout处理程序。当我在SVG元素的中间按下鼠标并将其移出SVG元素时,我得到以下事件列表: down out <path ...> out <circle r="39.5"> out <circle r="40"> out <circle r="49.5"> out <svg ...> up down 出来 出来 出来 出来 出来 向上的 这意味着鼠标首先离开
mouseout
处理程序。当我在SVG元素的中间按下鼠标并将其移出SVG元素时,我得到以下事件列表:
down
out <path ...>
out <circle r="39.5">
out <circle r="40">
out <circle r="49.5">
out <svg ...>
up
down
出来
出来
出来
出来
出来
向上的
这意味着鼠标首先离开路径,然后离开三个同心圆,最后离开SVG元素。我只对最后一个事件感兴趣,它会影响元素,元素附带了处理程序。SVG元素会获取所有其他事件,因为它们会冒泡到SVG元素
我怎么知道事件是否已冒泡?如何忽略那些不影响元素的事件(该元素已附加处理程序)?您可以使用
event.target
属性查看哪些元素实际触发了事件
$('myDiv')。在('click',函数(e)上{
console.log(e.target.id);
});代码>
#myDiv{
背景色:红色;
宽度:100px;
高度:100px;
}
点击我
您可以使用event.target
属性查看事件实际触发了哪些元素
$('myDiv')。在('click',函数(e)上{
console.log(e.target.id);
});代码>
#myDiv{
背景色:红色;
宽度:100px;
高度:100px;
}
点击我
似乎有必要检查target
是否与currentTarget
相同。另一方声称,这可以通过==
实现。因此,我现在在mouseout处理程序中使用以下条件来跳过事件仍然冒泡的情况:
svg.onmouseout = function (event) {
if (event.target === event.currentTarget) {
// Do what needs to be done after the mouse leaves the SVG element.
}
};
似乎有必要检查target
是否与currentTarget
相同。另一方声称,这可以通过==
实现。因此,我现在在mouseout处理程序中使用以下条件来跳过事件仍然冒泡的情况:
svg.onmouseout = function (event) {
if (event.target === event.currentTarget) {
// Do what needs to be done after the mouse leaves the SVG element.
}
};
如何比较元素?您可以给它们ID,例如,并比较它们如何比较元素?您可以给它们ID,例如,并比较它们