mousedown. rozmnażanie na temat rodzeństwa event.targets
Mam 2 węzły-rodzeństwa z "pozycją absolutną", które obsługują mousedown wydarzenie. Jak mogę uruchomić procedurę obsługi "div 1", gdy klikam na przezroczystym obszarze "div 2" (na rys.)
mousedown. rozmnażanie na temat rodzeństwa event.targets
Mam 2 węzły-rodzeństwa z "pozycją absolutną", które obsługują mousedown wydarzenie. Jak mogę uruchomić procedurę obsługi "div 1", gdy klikam na przezroczystym obszarze "div 2" (na rys.)
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
}
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;
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
dzięki, ja rzeczywiście to zrobił w podobny sposób – AlaskaKid