Frage

image

Ich habe 2 Geschwister-Nodes mit 'Position Absolute', die beide mit Mousedown-Event umgehen. Wie kann ich den Handler von 'Div 1' auslösen, wenn ich auf den transparenten Bereich des 'Div 2' klicke (auf dem Bild).

War es hilfreich?

Lösung

Wenn die überlappenden Elemente dynamisch sind, glaube ich nicht, dass es möglich ist, dies mit regelmäßigem Ereignis zu erreichen, da die beiden fraglichen überlappenden Elemente "Geschwister" sind.

Ich hatte das gleiche Problem und konnte es mit eher von einem hetchesten Szene -Szene testen, ob die Mausposition des Benutzers in demselben Bereich liegt.

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
}

Andere Tipps

Sie möchten 3 Event -Handler, einen für Div1, einen für Div2 und eine für ContentArea verwenden. Der ContentArea -Handler sollte die Ausbreitung aufhören, damit der Div2 -Handler nicht aufgerufen wird. Der Div2 -Handler sollte den Div1 -Handler nennen:

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top