You cannot set the window.location.href without reloading the page in javascript for security reasons.
From what I've seen some people are saying Google will index # urls but they will be not considered separate pages and I think that is not what you want. I also have very little experience with SEO.
You can change the location.hash property, it will change the current anchor identifier without navigating away form the page, for example you could:
<a href="http://mysite.com/cats" id="cats" class="ajaxLink">Cats</a>
<a href="http://mysite.com/dogs" id="dogs" class="ajaxLink">Dogs</a>
Then:
$('.ajaxLink').click(function (e) {
location.hash = this.id; // get the clicked link id
e.preventDefault(); // cancel navigation
// get content with Ajax...
});
BenMills, noone mentioned location.href, it's about location.hash which does not require page reload.
Although simplicity is best, but if you just want to automate this process or make it genericise then you can use this lite plugin jquery.hashTag.js
$('a').hashTag({
source: function() {
return $(this).attr('id');
}
});
Just put this snippet inside $(document).ready.
It will do rest of the work itself. Like auto clicking on the link whose id was provided as the hash.
Google will index a hash if it has an exclamation mark in the form: #!dogs
It then assumes that these are AJAX-oriented: