2011-10-18 12 views

Respuesta

3

Si los elementos superpuestos son dinámicos, no creo que es posible realizarlo mediante burbujeo de evento regular desde que los dos elementos superpuestos en cuestión son "hermanos".

Tuve el mismo problema y pude resolverlo con más de un hitTest scenerio donde compruebo si la posición del mouse del usuario está dentro de la misma área.

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

gracias, de hecho me hice de manera similar – AlaskaKid

0

Te conviene usar 3 controladores de eventos, uno para div1, uno para div2, y uno para contentArea. El controlador contentArea debe detener la propagación para que no se llame al controlador div2. El manejador div2 debe llamar al manejador 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

El problema es, en mi caso, que tengo muchos de estos divs y ellos son dinámicos (que pueden arrastrarse) y div1 tiene la misma estructura, de modo que no pueda manejar eventos de esta manera – AlaskaKid