Impedire la propagazione degli eventi con jQuery
venerdì 21 agosto, 2009Due elementi del DOM HTML sovrapposti, entrambi sensibili ad un evento click, soffrono dell'annoso problema della propagazione degi eventi tra gli strati del DOM stesso: il cosidetto event bubbling. Questo comportamento (che ritroviamo anche in altri ambienti di sviluppo: vedi Actionscript 3.0: MovieClip over MovieClip) è di per se utile in moltissimi casi. Tuttavia, in altri, genera non pochi problemi. Ad esempio immaginiamo di avere un div contenitore sensibile all'evento click. Sovrapposto a questo troviamo un classico link anchor a. Cliccando sul link oltre al "cambio pagina" scatterà l'evento associato al div contenitore. Per impedire la propagazione dell'evento click dall'anchor a al div contenitore, possiamo usare jQuery in questo modo:
Tramite jQuery è possibile impedire che l'evento click sul tag anchor a si propaghi agli elementi sottostanti:
-
$('a#mylink').click(
-
function(event) {
-
document.location = event.target.href;
-
event.stopPropagation();
-
event.preventDefault();
-
}
-
);











19

Ciao,
qualcuno mi conferma che il codice nel post funziona? Mi servirebbe impedire che i link del primo livello del mio menu multilivello facciano aprire una nuova pagina (creo il menu con le funzioni di Wordpress, quindi non posso togliere i link), ovvero: cliccando sui link di primo livello deve solo apparire il sottomenu (che faccio apparire con jqueryslidemenu, ma questo è un altro discorso...
)
Grazie!