• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Event-Bubbling?

sin777

Neues Mitglied
Hallo, ich habe gerade in meinem Buch etwas über Event-Bubbling und Event-Capturing gelesen und dachte mir, dass probiere ich doch gleich mal mit dem folgenden Code aus:

HTML:
<!DOCTYPE html>
<html>
<head>
    <title>DOM-Test</title>
    <style type="text/css" media="screen">
        #zwei {
            background-color: blue;
        }

        #drei {
            background-color: green;
        }

        #vier {
            background-color: yellow;
        }
    </style>

    <script type="text/javascript">

    </script>
</head>

<body>
     <form id="eins">
        <p id="zwei" onclick="alert('2');" onclick="alert('zwei');">
            Zwei Zwei Zwei Zwei Zwei
            Zwei Zwei Zwei Zwei Zwei
            Zwei Zwei Zwei Zwei Zwei
            <p id="drei" onclick="alert('3');" onclick="alert('drei');">
                Drei Drei Drei Drei
                Drei Drei Drei Drei
                Drei Drei Drei Drei
                Drei Drei Drei Drei
                <p id="vier" onclick="alert('4');" onclick="alert('vier');">
                    Vier Vier Vier Vier
                    Vier Vier Vier Vier
                    Vier Vier Vier Vier
                    Vier Vier Vier Vier
                </p>
            </p>
        </p>
     </form>
</body>
</html>

Ich hätte nun vermutet, dass wenn ich auf den Paragraphen mit der id vier klicke, dass anschließend noch 'drei' und 'zwei' in einem alert-Fenster ausgegeben wird. Meine Frage ist nun: Warum passiert das nicht? Das <p>-Tag vier ist ja in der Hierarchie der drei untergeordnet und die drei ist der zwei untergeordnet. Trotzdem passiert nichts..


Viele Grüße :)
 
Weil der Absatz mit der ID vier oberhalb der anderen liegt. Die darunterliegenden Elemente werden komplett überdeckt - ebenso deren eingebundene onclick-Eventhandler.
 
Das heißt gleiche Tags können keine Hierarchie bilden?

Wann werden denn Elemente überdeckt und wann nicht, bzw. gibt es da sonst noch etwas, dass nicht verschachtelt werden kann?
 
Elemente überdecken sich immer gegenseitig, es ist egal ob sie vom selben Typ sind oder nicht. Prima sehen kann man das im Firebug, der Erweiterung für Firefox und Chrome, wo die Ebenen einer Seite grafisch dargestellt werden können.
 
Naja, immer überdecken sie sich nicht, sonst gebe es ja gar keine Hierarchie, oder wie meinst Du das? :) Wenn ich <p>-Tags verschachtelte werden sie überdeckt aber wenn ich ein <b> in ein <p> packe, dann wird es nicht überdeckt.
 
Absätze zu Verschachteln widerspricht schon mal jedem HTML-Standard und -Entwurf. Das ist semantisch nicht möglich. Was ein Browser daraus macht ist pures Glück.

<b> ist ein Inline-Element. Das Element überdeckt ein <p> in dem es steht nur an exakt der Stelle wo es steht, bildet aber keine eigene Ebene.

Würde man ein <p> in ein <div> stecken, überdeckt das <p> das <div> an der Stelle an der es steht und bildet eine eigene Ebene - weil beide Element Blockelemente sind.
 
Zurück
Oben