2011-10-18 7 views

Odpowiedz

3

Jeśli zachodzące na siebie elementy są dynamiczne, nie wierzę, że jest to możliwe do wykonania tego używając regularną imprezę stacjonarnego od dwóch nakładających się elementów w pytaniu są „rodzeństwo”.

Miałem ten sam problem i udało mi się go rozwiązać za pomocą scenerii hitTest, gdzie testowałem, czy pozycja myszy użytkownika znajduje się w tym samym obszarze.

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

dzięki, ja rzeczywiście to zrobił w podobny sposób – AlaskaKid

0

Będziesz chciał użyć 3 programów obsługi zdarzeń, jednego dla div1, jednego dla div2 i jeden dla contentArea. Treść contentArea powinna przerwać propagację, aby program obsługi div2 nie był wywoływany. Moduł obsługi Div2 powinna wywołać obsługi 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

Problemem jest to, w moim przypadku, że mam wiele takich div i są dynamiczne (przeciągany) i div1 ma taką samą strukturę, więc nie mogę obsługiwać zdarzenia w ten sposób – AlaskaKid