[DHTML] Probleem metonclick op nested UL's/LI's*

Pagina: 1
Acties:

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 14-05 15:52
Het volgende (erg versimpeld voorbeeld :) ) stukje code:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<ul>
    <li>Node 1</li> 
        <ul>
            <li onclick="alert('a');">Node 1.1
                <ul>
                    <li onclick="alert('b');">Node 1.1.1</li>
                </ul>
            </li>
            <li>Node 1.2</li>
        </ul>
    <li>Node 2</li> 
</ul>


Als ik nu op de LI op het laagste nivo klik (Node 1.1.1) krijg ik achtereenvolgens een alert met 'b' en dan een met 'a'.
En dat is het probleem. Ik wil niet dat er ook nog een onclick wordt getriggerd op een hoger nivo.
Ik heb al geprobeerd met
JavaScript:
1
alert('b');return false;

maar dat is niet de oplossing. Wie heeft hoe dit op te lossen?

edit:

Sorry voor het posten aan de verkeerde kant van de schutting.. |:( Komt ervan als je continu beide aan het afstruinen bent...

[ Voor 25% gewijzigd door beetle71 op 19-02-2004 20:59 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
HTML en Javascript horen niet in P&W thuis, maar in W&G. Dat zijn nl. clientside oplossingen.
Let ook eens op je topictitel trouwens.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
P&W -> W&G dus

https://fgheysels.github.io/


  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

Als je erop klikt moet je afvangen dat de rest meedoen sinds je daar ook op klikt. en die return false doet dat dus niet. Je moet een functie maken die een flag heeft en die na een seconde weer uitzet. iig zo heb ik dat een keer gedaan.

[ Voor 11% gewijzigd door disjfa op 19-02-2004 20:58 ]

disjfa - disj·fa (meneer)
disjfa.nl


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

En als je je li wel afsluit?

Huur mij in als freelance SEO consultant!


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 14-05 15:52
CrashOne schreef op 19 februari 2004 @ 21:01:
En als je je li wel afsluit?
Ik sluit de LI wel af, (onder de /UL ;) )
Dus dat is het probleem niet, Ik heb het ook al geprobeerd met de LI afsluiten voor de UL, dus met de UL tussen /LI en LI, maar ook dat is het niet.

Dan misschien toch maar de truuk met een timer oid :'(

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Sluit hem eens direct af, dan werkt het nl wel.

Huur mij in als freelance SEO consultant!


  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

CrashOne schreef op 19 februari 2004 @ 21:06:
Sluit hem eens direct af, dan werkt het nl wel.
waarschijnlijk wil de ts de childnode aanroepen om een open sluiten menutje te maken. dat kan niet als je ul niet een child is van de li :)

disjfa - disj·fa (meneer)
disjfa.nl


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 14-05 15:52
disjfa schreef op 19 februari 2004 @ 21:07:
[...]

waarschijnlijk wil de ts de childnode aanroepen om een open sluiten menutje te maken. dat kan niet als je ul niet een child is van de li :)
Het wordt geen opensluiten menuutje, maar qua principe is het wel hetzelfde en heb ik idd de UL binnen de LI nodig....

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

onclick laat zich niet cancellen, onmousedown bijvoorbeeld wel
Als je toch onclick wilt gebruiken moet je de event bubbling tegengaan:

JavaScript:
1
2
3
4
5
6
7
8
function doclick(text, e) {

  alert(text);

  if (typeof e.stopPropagation != 'undefined') e.stopPropagation();
  else if (typeof e.cancelBubble != 'undefined') e.cancelBubble = true;

}


en dan met:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<ul>
    <li>Node 1</li> 
        <ul>
            <li onclick="doclick('a',event);">Node 1.1
                <ul>
                    <li onclick="doclick('b',event);">Node 1.1.1</li>
                </ul>
            </li>
            <li>Node 1.2</li>
        </ul>
    <li>Node 2</li> 
</ul>

Intentionally left blank


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 14-05 15:52
crisp schreef op 19 februari 2004 @ 21:20:
JavaScript:
1
2
3
4
5
6
7
8
function doclick(text, e) {

  alert(text);

  if (typeof e.stopPropagation != 'undefined') e.stopPropagation();
  else if (typeof e.cancelBubble != 'undefined') e.cancelBubble = true;

}
THANX! _/-\o_
Dit werkt! En veel netter dan allerlei truukjes met timers etc.
Pagina: 1