Solusi ini tidak lagi disarankan karena perubahan perilaku browser. Lihat jawaban lainnya.
Pada dasarnya, jika jangkar digunakan, kami mengikat ke acara gulir jendela. Idenya adalah bahwa acara gulir pertama harus termasuk dalam pemosisian ulang otomatis yang dilakukan oleh browser. Ketika ini terjadi, kami melakukan reposisi kami sendiri dan kemudian menghapus acara terikat. Hal ini untuk mencegah gulungan halaman berikutnya mengganggu sistem.
$(document).ready(function() {
if (window.location.hash) {
//bind to scroll function
$(document).scroll( function() {
var hash = window.location.hash
var hashName = hash.substring(1, hash.length);
var element;
//if element has this id then scroll to it
if ($(hash).length != 0) {
element = $(hash);
}
//catch cases of links that use anchor name
else if ($('a[name="' + hashName + '"]').length != 0)
{
//just use the first one in case there are multiples
element = $('a[name="' + hashName + '"]:first');
}
//if we have a target then go to it
if (element != undefined) {
window.scrollTo(0, element.position().top);
}
//unbind the scroll event
$(document).unbind("scroll");
});
}
});