Felix Riesterer: angeklicktes Unterelement aus <li onclick=xyz bestimmen

Beitrag lesen

Liebe Selfer,

ich habe mir einen Verzeichnisbaum serverseitig als verschachtelte Liste ausgeben lassen. Um nun diesen Baum Explorer-like auf und zuklappen zu können, habe ich alle <li>s mit onclicks versehen. Alle vergleichbaren Javascripte, die ich im Netz gefunden habe, wurden ab 500 Dateieinträgen immer seeeeeeehr laaaaangsam. ;-) Durch meinen Weg wollte ich erreichen, dass die Seite nach dem Laden schnellstmöglich benutzbar wird.

Codebeispiel zur Veranschaulichung:

<ul class="explorer_baum">  
  <li class="auf" onclick="aufzu(this)"><a href="javascript:auswahl(['ordner','/html/']);"><img src="icons/folder.gif" alt="icon" />html</a>  
    <ul>  
      <li class="zu" onclick="aufzu(this)"><a href="javascript:auswahl(['ordner','/html/admin/']);"><img src="icons/folder.gif" alt="icon" />admin</a>  
        <ul>  
          <li class="file"><a href="javascript:auswahl(['datei','/html/admin/index.html/']);"><img src="icons/htm.gif" alt="icon" />index.html</a></li>  
        </ul>  
      </li>  
      <li class="file"><a href="javascript:auswahl(['datei','/html/index.html/']);"><img src="icons/htm.gif" alt="icon" />index.html</a></li>  
    </ul>...

Mein bereits gelöstes Problem:
Dadurch, dass die <li>s den Eventhandler haben, feuern sie immer, egal was ich innerhalb anklicke. Diese Lösung war nötig, damit die per CSS vorgeschalteten |+| vor den Ordnern (Hintergrundbilder) sich ebenso Explorer-like verhalten. Damit übergeordnete <li>s aber nichts bewirken habe ich eine Art Filter gebaut, der nur das tatsächlich angeklickte <li> faltet, da sonst logischerweise immer der komplette Baum zusammenklappt, wenn man einen Ordner öffnen oder schließen möchte.

Mein offenes Problem:
Ich kann keinen Filter entwickeln, der es verhindert, dass Ordner zusammengefaltet werden, wenn auf Dateien in ihnen geklickt wird (da die Datei ja auch innerhalb eines <li>s mit onclick sitzt!), was natürlich sehr stört.

Was ich suche:
Mir würde eine Möglichkeit nützen festzustellen, was innerhalb des <li> tatsächlich angeklickt wurde. Im Moment denke ich über das Abfangen von den Koordinaten des Mauszeigers nach, um davon auf das Angeklickte selbst zu schließen. Denn wenn es sich nicht um das |+| vor dem Ordnersymbol handelt, dann soll nix gefaltet werden!

Wer kann mir helfen weiterzudenken? Freue mich schon auf Anregungen. :-)

Liebe Grüße aus Ellwangen,

Felix Riesterer.