Prévenir la propagation des événements avec jQuery

Deux éléments qui se chevauchent sur ​​le DOM HTML, à la fois sensible à un événement click , souffrent du problème séculaire des événements degi propagation entre les couches du modèle DOM-même: la propagation d'événements dits. Ce comportement (qui se retrouve également dans d'autres environnements de développement: Voir Actionscript 3.0: MovieClip MovieClip plus ) est en soi utile dans de nombreux cas. Cependant, dans d'autres, il crée de nombreux problèmes. . Par exemple, imaginez que vous avez une div contenant sensibles évènement click . Superposé à ce sujet sont un lien d'ancrage classique a . En cliquant sur ​​le lien en plus de la "tourner la page" a déclenché l'événement associé à la div conteneur. contenitore, possiamo usare jQuery in questo modo: Pour empêcher l'événement de clic répandre dall'anchor a l' div conteneur, nous pouvons utiliser jQuery comme ceci:

1
2
3
4
5
6
7
8
9
10
11
"box" > < div id = "box">
"mylink" href = "#" > Link < / a > < une id = "MyLink" href = "#"> Lien </ une >
</ div >

<! - Ou ->

"box" > < div id = "box">
<! - Contenu ->
</ div >
<! - Cette ancre a des styles établis de manière à être en position absolue ou relative et ensuite superposées sur le div conteneur ->
"mylink" href = "#" > Link < / a > < une id = "MyLink" href = "#"> Lien </ une >

si propaghi agli elementi sottostanti: Utilisation de jQuery, vous pouvez empêcher l'événement click sur la balise d'ancrage a être propagées à des éléments mentionnés ci-dessous:

1
2
3
4
5
6
7
) . click ( $ ('# Une MyLink'). Cliquez sur (
event ) { fonction (event) {
event. target . href ; .. document de location = événement cible href.;
; événement stopPropagation ().;
; . évènement preventDefault ();
}
);

One Response to "Empêcher la propagation des événements avec jQuery"

  1. 7 octobre 2009 Matthieu:

    Bonjour,

    quelqu'un me dit que le code fonctionne dans le message? Je veux garder les liens de la première couche de mon multi-niveaux des menus ne ouvrir une nouvelle page (je créer le menu avec les fonctions de WordPress, donc je ne peux pas enlever les liens), c'est à dire: en cliquant sur le lien ne devrait apparaître que le sous-menu de premier niveau ( Je ne s'affichent avec jqueryslidemenu, mais c'est une autre histoire ... :) )
    Merci!

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Arrêtez SOPA