Versio

Object toevoegen

Overzicht Reageren

Allard Jansen

Allard Jansen

22/10/2011 19:24:19
Quote Anchor link
Ik heb even een vraag over jQuery. Ik heb de onderstaande code (html). Ik wil graag met behulp van jQuery de structuur veranderen. Achter elk 'li' element moet een object komen, maar niet achter de laatste. Ik heb al een heel aantal dingen geprobeerd, maar helaas kom ik er maar niet uit. Kan iemand misschien helpen?

Ik heb deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
        <ul>
            <li>
                <a href="/login">Inloggen</a>
            </li>
            <li>
                <a href="/account/register">Registreren</a>
            </li>
            <li>
                <a href="/account/forget">Wachtwoord vergeten</a>
            </li>
        </ul>


Nadat de jQuery is uitgevoerd, is de code veranderd in dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        <ul>
            <li>
                <a href="/login">Inloggen</a>
            </li>
            <li>
                <a class="slash">/</a>
            </li>
            <li>
                <a href="/account/register">Registreren</a>
            </li>
            <li>
                <a class="slash">/</a>
            </li>
            <li>
                <a href="/account/forget">Wachtwoord vergeten</a>
            </li>
        </ul>
Gewijzigd op 22/10/2011 20:11:51 door Allard Jansen
 
PHP hulp

PHP hulp

25/05/2012 12:28:11
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Kut Piemel

Kut Piemel

22/10/2011 20:03:28
Quote Anchor link
forget = forgot
 
- Aar -

- Aar -

22/10/2011 20:04:48
Quote Anchor link
Wat heb je al geprobeerd?
 
Allard Jansen

Allard Jansen

22/10/2011 20:05:24
Quote Anchor link
Eigenlijk werkt dit hetzelfde als aan breadcrumb. Ik wil namelijk achter elk element (in dit geval li), een schuine streep plaatsen. Behalve achter de laatste, dit moet mogelijk zijn, kan iemand helpen?

@Aar:
Ik heb geprobeerd om met jQuery er een li element achter te zetten. Dat lukt, alleen staat hij er dan overal achter. Ik wil dat het bij de laatste niet gebeurd. Ik had dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$('#navigation li').has('ul').each(function(){
   $('ul > li', this).after('<li><a class="slash">/</a></li>');
});
Gewijzigd op 22/10/2011 20:10:59 door Allard Jansen
 
Niels Kieviet
Beheerder

Niels Kieviet

22/10/2011 20:25:52
Quote Anchor link
Waarom uberhaupt met JQuery?

Het kan toch ook met PHP? Een counter bijhouden, en wanneer de counter even groot is als de count van de items, dan geen slash toevoegen.
 
Jelmer rrrr

Jelmer rrrr

22/10/2011 21:10:39
Quote Anchor link
Dit kan zelfs met alleen css!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
ul > li:not(:last-child):after {
    content: '/';
}

Demo: http://jsfiddle.net/Y3YZu/

Mocht je me niet vertrouwen, dan kan je diezelfde selector gebruiken in jQuery, en achter alle elementen die worden gematcht alsnog je li-element met alleen een slash toevoegen. :)
Gewijzigd op 22/10/2011 21:11:49 door Jelmer rrrr
 
Niels Kieviet
Beheerder

Niels Kieviet

22/10/2011 21:12:18
Quote Anchor link
Werkt dat in elke browser Jelmer?
 
Jelmer rrrr

Jelmer rrrr

22/10/2011 21:20:37
Quote Anchor link
:after en content vanaf IE 8, :not vanaf IE 9 volgens quirksmode. Eventueel herschrijf je het naar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
li:after {
    content: '/';
}
li:last-child:after {
    content: '';
}
Gewijzigd op 22/10/2011 21:21:18 door Jelmer rrrr
 
Niels Kieviet
Beheerder

Niels Kieviet

22/10/2011 21:22:06
Quote Anchor link
Ok, Ik dacht al, dat gaat IE 6, 7 niet ondersteunen. Valt me al mee dat 8 het doet ;)
Maar goed, de keuze is aan de topic starter.
 
Wouter J

Wouter J

22/10/2011 21:49:29
Quote Anchor link
Sinds de opkomst van CSS3 zou je eigenlijk ::before moeten gebruiken, om pseudo-elements en pseudo-classes te onderscheiden is er in CSS3 voor pseudo-elements ingesteld dat het :: moet zijn (meer info). Alleen heeft dit nog minder browser support.
 
Allard Jansen

Allard Jansen

23/10/2011 09:43:56
Quote Anchor link
Niels Kieviet op 22/10/2011 20:25:52:
Waarom uberhaupt met JQuery?

Het kan toch ook met PHP? Een counter bijhouden, en wanneer de counter even groot is als de count van de items, dan geen slash toevoegen.


Het kan helaas niet met PHP. Maar het bovenstaande moet toch ook met jQuery kunnen? Want met CSS is ook geen optie. Een heel aantal browsers ondersteunen dat niet. En dan krijg je gewoon hetzelfde resultaat als bij mijn jQuery code. Heeft iemand misschien een oplossing?
 
Wouter J

Wouter J

24/10/2011 10:45:21
Quote Anchor link
Gebruik in jquery de :not selector:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$('#navigation li').has('ul').each(function(){
   $('ul > li:not(:last-child)', $(this)).after('<li><a class="slash">/</a></li>');
});

Deze zal wel overal werken, omdat deze selectors gemaakt zijn met de Sizzle JavaScript Selector Engine. En JavaScript werkt in elk browser.
 



Overzicht Reageren