image

我有2个兄弟姐妹节点,其中都有“绝对位置”,这两者都处理了Mousedown事件。当我单击“ Div 2”的透明区域时,如何触发“ Div 1”的处理程序(在图片上)。

有帮助吗?

解决方案

如果重叠的元素是动态的,我不认为可以使用常规事件冒泡来实现此操作,因为所讨论的两个重叠元素是“兄弟姐妹”。

我遇到了同样的问题,并且能够通过更多的hittest风景来解决它,我可以测试用户的鼠标位置是否在同一区域内。

function _isMouseOverMe(obj){
    var t = obj.offset().top;
    var o = obj.offset().left;
    var w = obj.width();
    var h = obj.height();
    if (e.pageX >= o+1 && e.pageX <= o+w){
        if (e.pageY >= t+1 && e.pageY <= t+h){
            return true;
        }
    }
    return false
}

其他提示

您需要使用3个事件处理程序,一个用于DIV1,一个用于DIV2,另一个用于Contectarea。 Contectarea处理程序应停止繁殖,以便不调用Div2处理程序。 DIV2处理程序应致电Div1处理程序:

function div1Click (e)
{
    // do something
}
function div2Click (e)
{
    div1Click.call(div1, e);
}
function contentAreaClick (e)
{
    e = e || window.event;
    if (e.stopPropagation) e.stopPropagation();
    e.cancelBubble = true;
    // do something
}
div1.onclick = div1Click;
div2.onclick = div2Click;
contentArea.onclick = contentAreaClick;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top