Verhindern Sie die Verbreitung der Ereignisse mit jQuery

Zwei überlappende Elemente des HTML-DOM, sowohl sensibel auf ein Ereignis click , leiden die uralte Problem der Ausbreitung DEGI Ereignisse zwischen den Schichten des DOM selbst: die sogenannte Eventbubbling. Dieses Verhalten (was auch in anderen Entwicklungsumgebungen gefunden: Siehe Actionscript 3.0: MovieClip MovieClip über ) ist an sich in vielen Fällen nützlich. Doch in anderen schafft sie viele Probleme. . Angenommen Sie haben ein div -Container-sensitive Veranstaltung click . Überlagert wird diese sind ein klassisches Anker-Link a . Klick auf den Link neben dem "umblättern" das Ereignis ausgelöst hat mit den damit verbundenen div -Container. contenitore, possiamo usare jQuery in questo modo: Um zu verhindern, die Ausbreitung dall'anchor click-Ereignis a das div -Container, können wir jQuery wie folgt aus:

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

<-! Oder ->

"box" > < div id = "box">
<-! Inhalt ->
</ div >
<-! Dieser Anker hat Stilen, so dass in absolute oder relative Position und dann auf den Container div überlagert gesetzt ->
"mylink" href = "#" > Link < / a > < ein id = "MyLink" href = "#"> Link </ eins >

si propaghi agli elementi sottostanti: Mit jQuery können Sie das Ereignis zu verhindern click auf das Anker-Tag a die unten aufgeführten Gegenstände verbreitet werden:

1
2
3
4
5
6
7
) . click ( $ ('A # MyLink). Klicken Sie auf (
event ) { Funktion (event) {
event. target . href ; .. Dokument location = Ereignis-Ziel href.;
; Veranstaltung stopPropagation ().;
; . Veranstaltung preventDefault ();
}
);

One Response to "Verhindern Sie die Verbreitung der Ereignisse mit jQuery"

  1. 7. Oktober 2009 Matthew:

    Hallo,

    mir jemand sagt, dass der Code in der Post funktioniert? Ich würde immer die Links der ersten Schicht meiner Multi-Level-Menüs nicht öffnen Sie eine neue Seite (Ich schaffe das Menü mit den Funktionen von WordPress, so kann ich nicht entfernen Sie die Links), dh: ein Klick auf den Link sollte nur erscheinen, die erste Ebene Untermenü ( Ich glaube mit jqueryslidemenu erscheinen, aber das ist eine andere Geschichte ... :) )
    Thank you!

Hinterlasse einen Kommentar

XHTML TAG PERMIT: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <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