aggi: bubbleup target array?

Hallo

gibt es eine Art Array, in dem alle Elemente enthalten sind, die bei einem Klick involviert sind?

Ich habe Elemente, die zu Beginn display:none haben. Bei Klick auf einen bestimmten Link werden Sie angezeigt.
Nun sollen sie geschlossen werden, wenn man auf der page einen Klick auslöst, welcher nicht innerhalb dieses Elements ist.

Dafür habe ich dem BODY ein onclick-Event hinzugefügt:

function onBodyClick() {  
	var hidden_elements = getElementsByClassName('hidden_element');  
	for (var i = 0; i < hidden_elements.length; i++) {  
		if (hidden_elements[i] != //TARGET//)  
			hidden_elements[i].style.display = "none";  
	}  
}

Ich suche nun nach dem richtigen Inhalt für //TARGET//, abder nicht nur das direkte, sondern ob es Teil der Targets beim bubblen ist.

Gibt es da was oder muss man das selbst zusammenbauen?

Danke

  1. Hi,

    gibt es eine Art Array, in dem alle Elemente enthalten sind, die bei einem Klick involviert sind?

    Nein.

    Ich habe Elemente, die zu Beginn display:none haben. Bei Klick auf einen bestimmten Link werden Sie angezeigt.
    Nun sollen sie geschlossen werden, wenn man auf der page einen Klick auslöst, welcher nicht innerhalb dieses Elements ist.

    Geht es jetzt um ein spezielles Element, oder mehrere (auf einmal)?

    Ich suche nun nach dem richtigen Inhalt für //TARGET//, abder nicht nur das direkte, sondern ob es Teil der Targets beim bubblen ist.

    Der IE kennt element.contains(), mit dem man prüfen kann, ob ein Element Nachfahre eines anderen Elements ist.
    Manche andere Browser unterstützen das ebenfalls bereits nativ; für die anderen lassen sich Workarounds ergooglen.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Ich habe Elemente, die zu Beginn display:none haben. Bei Klick auf einen bestimmten Link werden Sie angezeigt.
      Nun sollen sie geschlossen werden, wenn man auf der page einen Klick auslöst, welcher nicht innerhalb dieses Elements ist.

      Geht es jetzt um ein spezielles Element, oder mehrere (auf einmal)?

      2 Links mit jeweils einer zugehörigen DIV.
      Wird Link A angeklickt soll DIV A gezeigt werden. Klickt man auf Link B soll DIV A ausgeblendet und DIV B eingeblendet werden (und umgekehrt).
      Klickt man irgendwo hin, was nicht Link A oder B ist und sich nicht in einem der beiden DIVs befindet sollen beide DIVs ausgeblendet werden.

      Es klappt bisher nur, solange keine weiteren Elemente in den DIVs sind, wie bspw. ein INPUT, welches angeklickt wird, da ja nur TARGET abgefangen wird und das DIV dann nicht mehr TARGET ist.

      Der IE kennt element.contains(), mit dem man prüfen kann, ob ein Element Nachfahre eines anderen Elements ist.
      Manche andere Browser unterstützen das ebenfalls bereits nativ; für die anderen lassen sich Workarounds ergooglen.

      Gibt es die Möglichkeit in meiner onBodyClick Funktion alle currentTargets abzufangen und in ein Array zu speichern? Scheint mir weniger Ladezeit in Anspruch zu nehmen als verschiedene Workarounds einzubinden.

      1. Hi,

        Gibt es die Möglichkeit in meiner onBodyClick Funktion alle currentTargets abzufangen und in ein Array zu speichern?

        Wozu?

        Scheint mir weniger Ladezeit in Anspruch zu nehmen als verschiedene Workarounds einzubinden.

        Der notwendige Workaround ist minimal.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Gibt es die Möglichkeit in meiner onBodyClick Funktion alle currentTargets abzufangen und in ein Array zu speichern?

          Wozu?

          Ich könnte einfach in der if abgleichen, ob hidden_elements[i] im array enthalten ist und dann abbrechen..

          function onBodyClick() {  
                  var hidden_elements = getElementsByClassName('hidden_element');  
                  for (var i = 0; i < hidden_elements.length; i++) {  
                          if (hidden_elements[i] nicht in array)  
                                  hidden_elements[i].style.display = "none";  
                  }  
          }
          
          1. Hi,

            Wozu?

            Ich könnte einfach in der if abgleichen, ob hidden_elements[i] im array enthalten ist und dann abbrechen..

            Dann kannst du aber auch genauso gut prüfen, ob ein Element das Target des Events enthält oder nicht.

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
            1. Dann kannst du aber auch genauso gut prüfen, ob ein Element das Target des Events enthält oder nicht.

              okay. allerding finde ich bei google kein workaround. problem ist wohl, dass das wort contains nicht nur als method existiert.. und contains() wird von google auch als contains betrachtet.
              habs mit vielen varianten von js method contains workaround versucht, aber ohne erfolg. gibts ein erfolgversprechendes stichwort?

              danke!

              1. Hi,

                okay. allerding finde ich bei google kein workaround.

                http://www.quirksmode.org/dom/w3c_core.html

                MfG ChrisB

                --
                “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]