[IE/JS] element houdt hover style na DOM move

Pagina: 1
Acties:

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Topicstarter
Ik ben bezig met een CMS (wie niet tegenwoordig :)) en daarvoor natuurlijk een rechtensysteempje. Nu wil ik dat ook een beetje gebruiksvriendelijk hebben en daar heb ik het volgende op gevonden:
Een dynamische lijst met beschikbare groepen en gebruikers die door een onclick() naar de toegestane lijst verplaatst kunnen worden.
Demo: klik
Nu werkt dat allemaal prima zowel in FireFox als in InternetExplorer.
Maar nu het probleem:
De items in de lijst zijn anchors omdat ik dan niet moeilijk hoef te doen over :hover's die niet geimplementeerd zijn in InternetExplorer. Wanneer ik nu op een van die items klik om ze naar de andere lijst te verplaatsen heeft dat element uiteraard een :hover. FireFox verplaatst in dit geval het element naar de andere lijst en haalt de :hover stijl weg omdat dat element niet meer ge:hoverd wordt. InternetExplorer houdt daarentegen de :hover stijl niet weg.
Is er een manier om er voor te zorgen dat dit niet meer gebeurt?
P.S.:
Overgens als ik op Google hier naar probeer te zoeken krijg ik alleen maar vage meuk over :hovers die niet in InternetExplorer zitten en hier op GoT vindt ik vrijwel alleen maar dingen uit < 2003

Nu met Land Rover Series 3 en Defender 90


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Of je zet handmatig de kleuren terug.
Of je probeert een blur() aan de link te geven waardoor de hover gecancelled word.

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Topicstarter
Het zetten van de styles deed het hem.
Dat werkte dus wel maar het hoveren kun je dan vergeten omdat de :hover style wordt aangepast.
Ik heb die blur() ook geprobeerd maar daar wil IE niet aan :/
Heb je misschien nog andere ideeen?

[ Voor 73% gewijzigd door MTWZZ op 26-04-2005 12:40 ]

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Misschien dat het helpt als je de className op "" zet en daarna weer terugzet op z'n oude waarde:
JavaScript:
1
2
3
4
5
6
7
8
9
10
function move(oLink) {
    var sClass = oLink.className;
    oLink.className = '';
    
    /*
         jouw move code
    */

    oLink.className = sClass;
}

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Topicstarter
Het werkt alleen als ik nadat ik de className leeg maak een alert() doe. Als dat niet gebeurd werkt het dus niet.
Best vreemd. Maar het lijkt erop dat de muis echt van dat element af moet zijn (wat door die alert() gebeurt)
Nou goed ik ga denk ik toch maar die anchors omzetten in divs.

Nu met Land Rover Series 3 en Defender 90


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

IPV een alert kun je ook een timeout overwegen:

code:
1
2
3
4
5
6
7
8
9
10
function move(oLink) {
    var sClass = oLink.className;
    oLink.className = '';
    
    /*
         jouw move code
    */

    setTimeout("oLink.className = sClass;", 10);
}

Misschien werkt het zo wel :)

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Topicstarter
Ga ik proberen.
Maar nu eerst even trainen :)

Inmiddels geprobeerd maar daar heeft ie ook geen zin in. :/

[ Voor 43% gewijzigd door MTWZZ op 27-04-2005 08:56 ]

Nu met Land Rover Series 3 en Defender 90


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Topicstarter
Ok ik heb het opgelost door het element in IE eerst helemaal te verwijderen en daarna opnieuw een anchor te maken met daarin de childNodes van het originele item.
Het is een beetje overkill maar ik weet geen andere manier.

Nu met Land Rover Series 3 en Defender 90


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Soms moet je wat omwegen maken om je pagina's in IE ook te laten werken :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 12:13

crisp

Devver

Pixelated

MTWZZ schreef op woensdag 27 april 2005 @ 13:18:
Ok ik heb het opgelost door het element in IE eerst helemaal te verwijderen en daarna opnieuw een anchor te maken met daarin de childNodes van het originele item.
Het is een beetje overkill maar ik weet geen andere manier.
Bij een echte DOM move stel ik me voor dat je eerst een removeChild en daarna een appendChild doet :?

Edit: dat doe je dus ook zie ik :) Je moet dus een hele nieuwe anchor maken omdat hij de state vasthoud begrijp ik.
Nou, dan heb ik alleen nog maar wat te zeuren over de HTML-comments in je scriptblokje; bij een XHTML mimetype wordt dat stuk script daardoor als comment gezien, en aangezien HTML comments binnen een scriptblok toch geen enkel nut meer hebben kan je ze beter weglaten ;)

[ Voor 32% gewijzigd door crisp op 27-04-2005 15:34 ]

Intentionally left blank


Verwijderd

crisp schreef op woensdag 27 april 2005 @ 15:29:
Bij een echte DOM move stel ik me voor dat je eerst een removeChild en daarna een appendChild doet :?
Volgens mij impliceert een appendChild dat de node van zijn originele plek wordt gemoved. Je hoeft dus niet eerst een removeChild te doen.

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Topicstarter
Nou, dan heb ik alleen nog maar wat te zeuren over de HTML-comments in je scriptblokje; bij een XHTML mimetype wordt dat stuk script daardoor als comment gezien, en aangezien HTML comments binnen een scriptblok toch geen enkel nut meer hebben kan je ze beter weglaten
Hm htmltidy vindt het blijkbaar prima :P maar ik zal het wel weghalen. HTML only browsers krijgen toch een ander template.
Volgens mij impliceert een appendChild dat de node van zijn originele plek wordt gemoved. Je hoeft dus niet eerst een removeChild te doen.
Inderdaad, ik heb dit even getest maar het maakt niet uit.

Nu met Land Rover Series 3 en Defender 90

Pagina: 1