Wie benutze Javascript onclick auf einem DIV-Tag, um die Sichtbarkeit eines Abschnitts zu ändern, der klickbare Links enthält?

8

Hi Ich habe eine DIV-Sektion, die nur ihren Titel anfänglich sichtbar hat. Was ich erreichen möchte ist, dass, wenn der Besucher irgendwo in den Bereich von toggle_section klickt, der toggle_stuff div zwischen sichtbar / versteckt umschaltet.

%Vor%

Allerdings, so wie es jetzt eingerichtet ist, wenn ich einen <a> -Link innerhalb des toggle_section habe, wird durch Klicken auf diesen Link auch das onclick-Ereignis ausgeführt.

Dann ist meine Frage, was wäre der beste Weg, um diese Art von Verhalten einzustellen?

    
Miro Solanka 04.01.2009, 17:59
quelle

5 Antworten

7

Die einfachste Lösung besteht darin, einen zusätzlichen onclick-Handler zum Link hinzuzufügen in Ihrem DIV, der die Ereignisausbreitung stoppt:

%Vor%

Im obigen Beispiel wird die Funktion Event.stop() von Prototype verwendet, um einen browserübergreifenden Ereignisausbreitungsstopp zu ermöglichen.

Wenn Sie den inline onclick() -Handler verwenden, durchläuft der (meist nicht alle) Browser das Ereignis zuerst in der Bubbling-Phase (was Sie wollen).

Eine gute Anleitung zum Verständnis der tatsächlichen Gründe für dieses Verhalten und die Unterschiede zwischen Ereigniserfassung und Ereignis-Sprudeln finden Sie unter dem ausgezeichneten Quirksmodus.

    
Aron Rotteveel 04.01.2009, 19:01
quelle
4

im Skript:

%Vor%

activator link, gefolgt von content (kein Grund, der sonst nicht auf der Seite sein könnte):

%Vor%

Ich habe das von Modal Fenster Javascript CSS-Overlay - musste für die suchen Quelle und war erfreut zu finden, dass es diese Seite war. :)

    
Chris 24.10.2012 16:37
quelle
2

Nachdem ich meine erste Frage gestellt hatte, konnte ich es kaum erwarten, noch einmal darüber nachzudenken und es scheint, dass ich einen ganz einfachen Weg gefunden habe, dies zu erreichen.

Ich habe den onlick Effect.toggle in eine separate Funktion wie folgt verschoben:

%Vor%

Ich nehme an, das funktioniert nur für A -Tags und nicht für andere, die anklickbar sind.

    
Miro Solanka 04.01.2009 19:40
quelle
0

Ich weiß nicht wirklich, ob das funktionieren würde, aber versuch, dem Link-Element einen größeren z-index -Wert zu geben als dem toggle_section div.

etwas wie:

%Vor%     
andyk 04.01.2009 18:38
quelle
0

Fügen Sie einen onclick-Handler hinzu, um die Ereignisausbreitung zu stoppen.

Mit JQuery verwenden: onclick="event.stopPropagation ()"

Bei Verwendung des Prototyps: onclick="Event.stop (event)"

    
Loren 13.12.2010 11:33
quelle