mousedown. propagazione sui fratelli event.targets
Ho 2 nodi fratelli con "posizione assoluta" che gestiscono entrambi gli eventi. Come posso attivare il gestore di 'div 1' quando clicco sull'area trasparente di 'div 2' (sulla foto)
mousedown. propagazione sui fratelli event.targets
Ho 2 nodi fratelli con "posizione assoluta" che gestiscono entrambi gli eventi. Come posso attivare il gestore di 'div 1' quando clicco sull'area trasparente di 'div 2' (sulla foto)
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
}
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;
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
grazie, in realtà ho fatto in modo simile – AlaskaKid