Dat klopt, sites zoals lifehacker gebruiken Ajax. De reden de je PHP includes ook
moet gebruiken is dat het de makkelijkste manier is om te zorgen dat je content ook zichtbaar is voor gebruikers die geen javascript ondersteunen.
Mijn code hier is ook niet perfect. Allereerst gebruik ik hier jQuery (het is dus niet helemaal standaard Javascript code). Hierdoor kan je veel makkelijker dit soort dingen (en animaties) doen, maar er moet wél telkens een hele Javascript library ingeladen worden die redelijk groot is. Op zich is dit niet zo'n groot probleem, omdat een heel groot deel van de sites dit gebruikt (waaronder Google). Die linken allemaal naar hetzelfde bestand op de site van Google, waardoor die bij vrijwel iedereen als gecacht is (natuurlijk kan je dat bestand ook op je eigen server hosten).
Ten tweede doe ik geen error handling voor de includes (wat eigenlijk wel moet) en ben ik vergeten hashes toe te voegen bij een klik op een link (hierdoor komt een d.m.v. Ajax geladen pagina ook goed terecht in de bookmarks. Ik ga mijn code zo even updaten om dit te verbeteren.
Oké, nu jouw vraag. Met $(this).attr('name') krijg je de inhoud van het html-attribuut "name". Op die manier krijg je de naam van de pagina die geladen moet worden. Die naam moet je dus ook bij elke link in je navigatiebar in het attribuut "name" zetten.
Edit: code verbetert.
(Bewerkt door Frog