Object toevoegen
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:
Nadat de jQuery is uitgevoerd, is de code veranderd in dit:
Ik heb deze code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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>
<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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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>
<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
Gesponsorde koppelingen:
forget = forgot
Wat heb je al geprobeerd?
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:
@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)
1
2
3
2
3
$('#navigation li').has('ul').each(function(){
$('ul > li', this).after('<li><a class="slash">/</a></li>');
});
$('ul > li', this).after('<li><a class="slash">/</a></li>');
});
Gewijzigd op 22/10/2011 20:10:59 door Allard Jansen
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 toch ook met PHP? Een counter bijhouden, en wanneer de counter even groot is als de count van de items, dan geen slash toevoegen.
Dit kan zelfs met alleen css!
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. :)
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
Werkt dat in elke browser Jelmer?
:after en content vanaf IE 8, :not vanaf IE 9 volgens quirksmode. Eventueel herschrijf je het naar
Gewijzigd op 22/10/2011 21:21:18 door Jelmer rrrr
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.
Maar goed, de keuze is aan de topic starter.
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.
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 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?
Gebruik in jquery de :not selector:
Deze zal wel overal werken, omdat deze selectors gemaakt zijn met de Sizzle JavaScript Selector Engine. En JavaScript werkt in elk browser.
Code (php)
1
2
3
2
3
$('#navigation li').has('ul').each(function(){
$('ul > li:not(:last-child)', $(this)).after('<li><a class="slash">/</a></li>');
});
$('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.



