[jQuery] Hover handlerOut werkt wel, maar handlerIn niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 12-09 14:37
Zoals de titel vermeld heb ik problemen met de jQuery functie .hover()

http://api.jquery.com/hover/

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
jQuery(document).ready(function() {
            jQuery('#header-menu ul li').hover(
                function () {
                    jQuery(this).animate({
                        backgroundPosition: '0 -33px'
                    }, 
                    300);
                },
                function () {
                    jQuery(this).animate({
                        backgroundPosition: '0 0'
                    }, 
                    300);
                }
            );
        });


In bovenstaande voorbeeld wil ik de background-position aanpassen van li waarvan de background een sprite is van 66 pixels hoog. Hier zit een gradient in en deze wil ik graag naar onder verschuiven. Hier een voorbeeld:

http://snook.ca/technical/jquery-bg/

Maar ik krijg het niet aan de gang, hij voert handlerIn gewoon niet uit en handlerOut wel, ik zie als ik m'n muis van de li afhaal namelijk background-position: 0 0; verschijnen in element style in Chrome. Heeft iemand enig idee waarom dit niet zou werken?

Edit

Inmiddels heb ik het werkend met onderstaande code, hier met mouseover en mouseout, maar hover werkt ook gewoon. Blijkbaar accepteert jQuery het niet dat er 'px' achter de getallen staat...

Het probleem nu is dat het ding niet animeerd, hij wijzigd gewoon de background position en wacht daar de duration mee.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
jQuery(document).ready(function() {
            jQuery('#header-menu ul li').mouseover(function () {
                jQuery(this).stop().animate({
                    backgroundPosition: '0 -33'
                }, 
                300);
            }).mouseout(function () {
                jQuery(this).stop().animate({
                    backgroundPosition: '0 0'
                }, 
                300);
            });
        });

[ Voor 25% gewijzigd door TheNephilim op 08-12-2011 17:29 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Die url is leuk (maar doet 't soms niet...) maar heb je ook een eigen testcase online staan waar we naar kunnen kijken? Zet anders even een minimale testcase op http://jsfiddle.net/ ofzo. Als ik 't test werkt 't namelijk precies zoals 't zou moeten.

[ Voor 21% gewijzigd door RobIII op 08-12-2011 17:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 12-09 14:37
Thnx! Ik heb even een JSfiddle gemaakt:

http://jsfiddle.net/wKCmW/

Zoals ik in de edit al vermelde, heb ik het handler probleem verholpen; hij accepteerde geen px in de value.

Maar nu animeert hij niks en wacht hij gewoon 300ms voordat hij de wijziging doorvoerd :S

Edit

Omg dit meen je niet, background-position over de y axis werkt gewoon niet. Met een plugin krijg je het wel werkend, ik heb mijn JSfiddle aangepast...

[ Voor 23% gewijzigd door TheNephilim op 08-12-2011 17:44 ]


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Klopt, background-position is geen getal-achtige property maar een pseudo-shorthand. Pseudo, omdat background-position-x (en -y) niet in alle browsers bestaat. Net zoals dit heb je voor bijvoorbeeld kleurenanimatie ook een plugin nodig die animeert tussen twee kleuren.

Er zijn ook properties die sowieso nooit animeerbaar zijn, zoals display, cursor, of text-align :)

日本!🎌


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Waarom voor zo'n simpel en onbelangrijk effect als deze eigenlijk JavaScript gebruiken? Gewoon CSS transitions inzetten en de browsers die dit niet ondersteunen laten schakelen zonder vloeiende overgang.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45

Bosmonster

*zucht*

Omdat vooralsnog de ondersteuning voor javascript een stuk groter is dan die voor css transitions.

Dus als de vraag is "dit moet animeren", kies je een oplossing die in zoveel mogelijk browsers werkt. Niet eentje die maar werkt in 50% van de browsers. Hoe hip je oplossing ook is.

[ Voor 5% gewijzigd door Bosmonster op 09-12-2011 10:05 ]

Pagina: 1