GrandmasterA: "body onclick -> aus" kollidiert mit "a onclick -> ein"

Hallo zusammen,

ich habe ein DIV-Layer, das bei onkeyup in einem Suchfeld eingeblendet wird und per AJAX Suchergebnisse anzeigt. Um es auszublenden, habe ich im <body>-Tag ein onclick-event, das es ausblendet. Funktioniert soweit gut.

Jetzt möchte ich im selben DIV Inhalte einblenden, indem ich auf ein Icon clicke, das sich ebenfalls im Body befindet. Allerdings klappt das nicht, da quasi Einblenden und Ausblenden gleichzeitig stattfindet (Einblenden durch click auf das Icon und gleichzeitig Ausblenden da sich das Icon im Body befindet).

Wenn ich testweise das Icon mit onmouseover belege, klappt es. Also liegt es am onclick bzw. der Kollision.

Hat jemand eine Idee, wie ich das umsetzen kann, so dass ich auf das Icon klicke und das DIV sichtbar wird und irgendwo auf den Body, um es auch wieder auszublenden?

Gruß,
Andreas

  1. Prüfe, welches Event zuerst ausgewertet wird (alert) und hebel dann das eine mittels einer bool-variable aus.

    So kannst du das unterbinden ;)

    var active = false;  
    var abletodeactivate = true;  
    function deaktivieren() {  
    	if(abletodeactivate) {  
    		active = false  
    	}else{  
    		abletodeactivate = true  
    	}  
    }  
    function aktivieren() {  
    	abletodeactivate = false  
    	active = true  
    }
    

    Damit dürfte dir ersichtlich sein, wie ich das meine ;)

    1. Prüfe, welches Event zuerst ausgewertet wird (alert) und hebel dann das eine mittels einer bool-variable aus.

      Danke für die Antwort. Das hat mich schon einen Tick weiter gebracht. Die Suche funktioniert nun so, dass ich sie per Klick auf den Body wieder deaktivieren kann und ich kann es auch per Icon aktivieren. Allerdings müsste ich es anschließend auch per Klick auf den Body wieder deaktivieren können, was aber nicht geht, weil ich es beim Klick auf das Icon deaktiviert habe...

  2. Moin!

    Hat jemand eine Idee, wie ich das umsetzen kann, so dass ich auf das Icon klicke und das DIV sichtbar wird und irgendwo auf den Body, um es auch wieder auszublenden?

    Event-Bubbling abschalten. Sonst kommt der Klick zuerst am A vorbei, und danach beim BODY.

    - Sven Rautenberg

    1. Event-Bubbling abschalten. Sonst kommt der Klick zuerst am A vorbei, und danach beim BODY.

      DANKE! Genau das hat geholfen!

      1. Hi,

        Event-Bubbling abschalten. Sonst kommt der Klick zuerst am A vorbei, und danach beim BODY.

        DANKE! Genau das hat geholfen!

        das hört sich ja hochinteressant an? Wie schaltet man denn das Event-Buppeling auf in JavaSCript?

        1. DANKE! Genau das hat geholfen!

          das hört sich ja hochinteressant an? Wie schaltet man denn das Event-Buppeling auf in JavaSCript?

          Ich hab nach dem Hinweis einfach mal danach gegooglet, und dann hinter meine Funktion beim <a onclick> noch "event.cancelBubble = true;" gesetzt. Das hat gereicht. Weiter hab ich mich damit dann nicht mehr beschäftigt, weil es schon spät war. Aber unter Google findet man sicherlich noch weiterreichende Informationen zu diesem Thema.