Domanda

image

Ho 2 fratelli-nodi con 'posizione assoluta', che sia evento maniglia mousedown. Come posso attivare il gestore di 'div 1' quando sto clic sull'area trasparente del 'div 2' (sul pic.)

È stato utile?

Soluzione

Se gli elementi che si sovrappongono sono dinamici, non credo sia possibile per raggiungere questo obiettivo utilizzando normale spumeggiante evento dal momento che i due elementi sovrapposti in questione sono "fratelli".

Ho avuto lo stesso problema e sono stato in grado di risolvere con più di una scenerio hitTest in cui ho test se la posizione del mouse dell'utente è all'interno della stessa area.

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
}

Altri suggerimenti

Ti consigliamo di utilizzare 3 gestori di eventi, uno per div1, uno per div2, e uno per contentArea. Il gestore contentArea dovrebbe smettere di propagazione in modo che il gestore div2 non viene chiamato. Il gestore div2 dovrebbe chiamare il gestore 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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top