Question

image

I have 2 fratries noeuds avec «position absolue qui à la fois des événements de mousedown de poignée. Comment puis-je déclencher le gestionnaire de « div 1 » quand je suis en cliquant sur la zone transparente du « div 2 » (sur la photo).

Était-ce utile?

La solution

Si les éléments qui se chevauchent sont dynamiques, je ne crois pas qu'il soit possible d'y parvenir en utilisant un barbotage d'événement régulier puisque les deux éléments qui se chevauchent en question sont « frères et sœurs ».

J'ai eu le même problème et j'ai pu le résoudre avec plus d'un hitTest scenerio où je teste si la position de la souris de l'utilisateur se trouve dans la même zone.

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
}

Autres conseils

Vous aurez envie d'utiliser 3 gestionnaires d'événements, un pour div1, un pour div2, et un pour contentArea. Le gestionnaire d'contentArea doit arrêter la propagation de telle sorte que le gestionnaire d'div2 est pas appelé. Le gestionnaire de div2 doit appeler le gestionnaire de 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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top