jQuery addClass

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Geachte medetweakers,

Via jQuery voeg ik een extra class toe voor een <li> element om de achtergrond een divider, bij het laatste li element te verbergen. Echter wanneer de pagina langer doet over het laden blijft het laatste <li> element er even staan met een achtergrond.

Aangezien ik deze class op 2 menu's toepas, vind ik het niet echt netjes. Is er een manier om die toch goed te verbergen?

In mijn scripts.js heb ik dit al helemaal bovenaan gezet:

code:
1
2
3
4
5
6
/* Menu classes */
jQuery(window).load(function(){
    jQuery('#topmenu>li:last').addClass('last').css("background", "none");
    jQuery('#menu>ul li:last').addClass('last').css("background", "none");
    jQuery('#menu>ul li:first').addClass('first');
});


Ook in de css heb ik geprobeerd om wat elementen om te wisselen. Hopelijk heeft iemand een oplossing :)

Thanks!

Acties:
  • 0 Henk 'm!

  • MoietyMe
  • Registratie: Juli 2003
  • Laatst online: 26-05 08:10

MoietyMe

zij/haar

Waarom niet gewoon met CSS?

Cascading Stylesheet:
1
2
3
#menu > ul li:last-child {
background:none;
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In de css heb ik dit ook gedaan, maar zonder resultaat. Vandaar dat ik 'm al aanroep bij het js. Maar dit heeft ook geen effect.

Acties:
  • 0 Henk 'm!

  • MoietyMe
  • Registratie: Juli 2003
  • Laatst online: 26-05 08:10

MoietyMe

zij/haar

Kun je dan wellicht de relevante HTML posten?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zeker ;)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
          <nav id="menu" class="horizontalmenu">
              <ul class="menu">
                  <li>
                      <a href="#" title="Menutitel">Process Consulting</a>
                  </li>
                  <li>
                      <a href="#" title="Menutitel">Process Safety Consulting</a>
                        <ul class="sub-nav">
                            <li><a href="#" title="subnav">Subnav 1</a></li>
                            <li><a href="#" title="subnav">Subnav 2</a></li>
                        </ul>                      
                  </li>
                  <li>
                      <a href="#" title="Menutitel">Management Consulting</a>
                  </li>
                  <li>
                      <a href="#" title="Menutitel">Education</a>
                  </li>
                  <li>
                      <a href="#" title="Menutitel">Employment</a>
                  </li>
                  <li>
                      <a href="#" title="Menutitel">Photo Gallery</a>
                  </li>
                  <li>
                      <a href="#" title="Menutitel">Reprocess Ltd Brochure</a>
                  </li>                                                                                                            
              </ul>
          </nav>


Dit is het menu met daarin de subnav. Het laatste li element krijgt dus die extra class mee. Zit nog een menu'tje in de pagina met exact dezelfde structuur.

Acties:
  • 0 Henk 'm!

  • MoietyMe
  • Registratie: Juli 2003
  • Laatst online: 26-05 08:10

MoietyMe

zij/haar

Oeps ik had een klein foutje in mijn CSS. Nu aangepast, probeer dat eens.

Lijkt toch heel goed te werken: :last-child.

[ Voor 40% gewijzigd door MoietyMe op 09-10-2012 09:39 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanks dit werkt! ;)

Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 13:30

Zoefff

❤ 

Toch zal je nog wel een oplossing moeten verzinnen voor IE 8 en 7, die bieden geen ondersteuning voor de :last-child selector. Als het mogelijk is om de styling zo te doen dat je de :last-child selector kan vermijden verdient dat wat mij betreft de voorkeur.


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja inderdaad Zoefff dat las ik ook, heb momteel het javascript en last-child toegepast. In de huidige browsers gaat 't nu perfect alleen in IE7 & 8 inderdaad nog even die border flikkering aan de rechterkant van het laatste li element. Als iemand daar nog een oplossing voor heeft dan hoor ik deze graag ;)

Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 13:30

Zoefff

❤ 

Geef eens een gestijld voorbeeld van wat je wil bereiken (of een mockup). Vaak kan je goed om het gebruik van :last-child heenwerken, bijvoorbeeld om dan bepaalde properties "om te draaien" waardoor je het laatste element standaard opmaakt zoals je het wil hebben en de uitzonderingen juist op de :first-child kan beschrijven, dat breder wordt ondersteund.


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter


Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 12-09 14:10
Hoe genereer je het menu? Als je het server-side genereert, kan je ook een class 'last' meegeven, dat wordt altijd ondersteund. Of zit je vast aan een vaste html?

Acties:
  • 0 Henk 'm!

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

Bosmonster

*zucht*

Als je de window-load nu eens vervangt met document ready, is je flash in de meeste gevallen al weg. Je wacht nu namelijk ook tot alles geladen is, inclusief afbeeldingen.

:last-child kun je natuurlijk ook gebruiken als extra voor modernere browsers (of eigenlijk andersom, de jQuery fix voor IE7/8).

[ Voor 27% gewijzigd door Bosmonster op 11-10-2012 17:06 ]


Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 01:51

alienfruit

the alien you never expected

Maar je kan niet de HTML aanpassen en een first en last klasse toevoegen?

Acties:
  • 0 Henk 'm!

  • Wiethoofd
  • Registratie: Juli 2007
  • Laatst online: 14-08 12:22

Wiethoofd

Broadcast TOM

De last-child werkt toch gewoon in CSS, waarom moet je met JS dan de laatste <li> targetten als dat met de CSS meteen al kan zonder extra classes toe te voegen.

En IE7 ondersteunt wel de first-child, dus de boel omdraaien kan, en ik vind zelf li+li altijd prettig omdat je dan de eerste li met rust laat qua 'extra' opmaak.

Volg me op Twitter/X & Bluesky


Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 13:30

Zoefff

❤ 

Volgens mij was er al duidelijk beargumenteerd dat dat :last-child dus niet "gewoon" werkt, omdat IE 7 en 8 daar geen ondersteuning voor bieden. Evenals de adjecent sibling selector; die werkt vanaf IE8 goed, maar in IE7 werkt die niet altijd omdat comments ook als siblings gezien worden en het op die manier dus nog wel eens mis zou kunnen gaan.


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter

Pagina: 1