Toon posts:

jQuery/JS mouseover beperken tot 1 element

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer in een uitgebreide list een mouseover af te handelen door middel van de hover() functie van jQuery. Het probleem is echter dat ik het niet voor elkaar krijg om de mouseover tot 1 enkel <li> te beperken, alle 'parent' li's worden ook getriggerd.
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<ul>
    <li>Bla</li>
    <li>Bla
        <ul>
            <li>Bla</li>
            <li>Bla</li>
        </ul>
    </li>
    <li>Bla
        <ul>
            <li>Bla
                <ul>
                    <li>Bla</li>
                    <li>Bla</li>
                </ul>
            </li>
            <li>Bla</li>
            <li>Bla</li>
        </ul>
    </li>
</ul>

JavaScript:
1
2
3
4
5
6
7
8
9
10
$(document).ready(function() {
    $('li').hover(
        function(e) {   // mouseover
            $(this).css('background-color', 'red');
        },
        function(e) {   // mouseout
            $(this).css('background-color', 'blue');
        }
    );
});


Ik heb in de javascript al geprobeerd de event te stoppen met .stopPropagation() en false te returnen, maar nog steeds worden alle li-parentnodes getriggerd. Hoe kan ik zorgen dat ik enkel de LI pak waar de muis daadwerkelijk over of out gaat?

Acties:
  • 0 Henk 'm!

  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 08:48
Is het een optie om de li's die je wilt triggeren een class mee te geven? Dan ben je vrij snel van het probleem af:

JavaScript:
1
2
3
$$('li.hoverable').each( function( element ) {
  //doe je ding
});


Is wel Prototype-code uit het blote hoofd, maar het idee is volgens mij wel duidelijk.

Read the code, write the code, be the code!


Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 23-09 19:37
Dat lijkt me ook niet meer dan logisch, je past je mouse-event toe op alle ListItems. Je zult inderdaad met een class moeten gaan werken, of met een uitgebreidere selector.

$$('ul li ul li')

Al lijkt een class mij een betere oplossing.

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De bedoeling is ook dat alle li's mouseover gedrag vertonen, alleen het probleem is dat hoger gelegen li's nu ook getriggerd worden wanneer en childnode gehoverd worden. Mijn bedoeling is dus dat er maar 1 per keer word getriggerd en niet de node + al zijn parents.
Zoals ik nu het hover gedrag toepas zorgt al dat de siblings niet reageren bij een hover, dus mij lijkt dat daar het probleem niet ligt?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Dat heeft puur te maken met de bubbling behaviour van events; je zal met behulp van de target/srcElement property van je event-object moeten kijken welk element precies het event triggerde.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 23-09 23:23
http://www.jqueryhelp.com/viewtopic.php?p=3437

Dat al gelezen? Lijkt veel op jouw probleem...
Pagina: 1