Javascript 如何获取导致div模糊事件的元素

Javascript 如何获取导致div模糊事件的元素,javascript,jquery,Javascript,Jquery,一个div有一个有界focusout事件OnFocusOut(方法名称)事件某些代码正在执行。但我想知道是哪个元素导致了focusout事件。如果e.relatedTarget是该div的子元素,则不要从OnFocusOut方法执行代码 我尝试了e.relatedTarget(在google chrome上工作),但是这个变量在firefox上不起作用(不支持)。所以我想为e.relatedTarget提供一些替代解决方案,它支持所有浏览器 编辑 在输出中显示 Container21是绑定了f

一个
div
有一个有界
focusout
事件
OnFocusOut
(方法名称)事件某些代码正在执行。但我想知道是哪个元素导致了
focusout
事件。如果
e.relatedTarget
是该
div
的子元素,则不要从
OnFocusOut
方法执行代码

我尝试了
e.relatedTarget
(在google chrome上工作),但是这个变量在firefox上不起作用(不支持)。所以我想为e.relatedTarget提供一些替代解决方案,它支持所有浏览器

编辑

在输出中显示

Container21
是绑定了focusout事件的
contentEditable
div

我希望如果用户单击的不是
container22
,而是
doSomthing()


一个限制是我不能在其余元素上添加单击事件。

如果您的Container22是一个可以有焦点的元素,您可以在模糊事件中检查它是否有焦点:

$('#container21').blur(function(){
    // timeout because focus does not switch immediately
    setTimeout(function(){
        if (document.activeElement === document.getElementById('container22')) {
            // your logic here: container22 has focus
        } else {
            // your logic here: container22 does not have focus
        }
    }, 60);
});
如果Container22没有焦点,您可以给它一个类:

$('#container22').click(function(){
    $(this).addClass('fake-focus');
});
当Container21获得焦点时,将删除该类:

$('#container21').focus(function(){
    $('#container22').removeClass('fake-focus');
});
当Container21失去焦点时,您会检查该类——如果Container22拥有该类,则意味着用户单击该类以将焦点调出。我们需要再次超时,因为单击事件将在焦点丢失后发生

$('#container21').blur(function(){
    // timeout because focus does not switch immediately
    setTimeout(function(){
        if ($('#container22').hasClass('fake-focus')) {
            // your logic here: container22 was clicked
        } else {
            // your logic here: container22 was not clicked
        }
    }, 60);
});

e、 有条件的目标?@guradio e.target提供与我绑定focusout事件的div相同的div,即使我从div外部单击。您可以共享可执行的演示/片段吗?或者您可能正在查找
e.stopPropogation()
如果目标元素Container22可以有焦点,您可以尝试检查它在您的事件中是否有焦点。或者在单击时向其添加焦点类,并在用户单击Container21时删除该类,然后检查该类。