2011-10-18 13 views

risposta

3

Se gli elementi sovrapposti sono dinamici, non credo sia possibile per raggiungere questo obiettivo utilizzando appuntamento fisso bubbling dal momento che i due elementi sovrapposti in questione sono "fratelli".

Ho avuto lo stesso problema e sono stato in grado di risolverlo con più di un hitTest scenerio dove collaudo se la posizione del mouse dell'utente si trova 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 
} 
+0

grazie, in realtà ho fatto in modo simile – AlaskaKid

0

Dovrai utilizzare 3 gestori di eventi, uno per div1, uno per div2 e uno per contentArea. Il gestore di contentArea deve interrompere la propagazione in modo che il gestore div2 non venga 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; 
+0

Il problema è, nel mio caso, che ho molti di questi div e sono dinamici (trascinabili) e div1 ha la stessa struttura, quindi non posso gestire gli eventi in questo modo – AlaskaKid