Ik heb een menu met de volgende opbouw:
Als er wordt geklikt op een item moet ik dit detecteren en op het moment dat dit element een parent is (aangegeven met class="parent"), moet ik actie ondernemen.
menuElement is soms een span, soms een a. Het gemakkelijkste zou zijn om de CSS selector ($$) zo in te stellen zodat deze alleen triggert op het moment dat er op een parent wordt geklikt. Hiervoor heb ik "#nav li.parent a" geprobeert, maar deze triggert ook op alle sub menu items. Performance is belangrijk.
HTML:
1
2
3
4
5
6
7
8
| <ul id="menu"> <li class="level0"><a><span>item 1</span></a></li> <li class="level0 parent"><a><span>item 2</span></a> <ul class="level0"> <li class="level1"><a><span>child item</span></a></li> </ul> </li> </ul> |
Als er wordt geklikt op een item moet ik dit detecteren en op het moment dat dit element een parent is (aangegeven met class="parent"), moet ik actie ondernemen.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| var menu = Class.create({ initialize: function(){ $$("#menu li").invoke('observe', 'click', this.linkClick.bind(this)); }, linkClick: function(e){ var menuElement = e.element(); // Pseudo code: if(Element has class Parent){ Do Something(); } }) document.observe('dom:loaded', function() { new menu(); }) |
menuElement is soms een span, soms een a. Het gemakkelijkste zou zijn om de CSS selector ($$) zo in te stellen zodat deze alleen triggert op het moment dat er op een parent wordt geklikt. Hiervoor heb ik "#nav li.parent a" geprobeert, maar deze triggert ook op alle sub menu items. Performance is belangrijk.
Specialist in:
Soldeerstations
Oscilloscoop