Anda dapat menyetel href menjadi #!sebagai ganti#
Sebagai contoh,
<a href="#!">Link</a>
tidak akan melakukan pengguliran saat diklik.
Awas! Ini masih akan menambahkan entri ke riwayat browser saat diklik, artinya setelah mengeklik tautan Anda, tombol kembali pengguna tidak akan membawa mereka ke halaman sebelumnya. Untuk alasan ini, mungkin lebih baik menggunakan .preventDefault()pendekatan tersebut, atau menggunakan keduanya dalam kombinasi.
Berikut ini adalah Fiddle yang menggambarkan hal ini (cukup geser ke bawah browser Anda sampai Anda mendapatkan scrollbar):
http://jsfiddle.net/9dEG7/
Untuk kutu buku spesifikasi - mengapa ini berfungsi:
Perilaku ini ditentukan dalam spesifikasi HTML5 di bawah bagian Menavigasi ke pengenal fragmen . Alasan link dengan a href "#"menyebabkan dokumen menggulir ke atas adalah karena perilaku ini secara eksplisit ditetapkan sebagai cara untuk menangani pengenal fragmen kosong:
2. Jika fragidstring kosong, maka bagian dokumen yang ditunjukkan adalah bagian atas dokumen
Menggunakan href dari "#!"malah berfungsi hanya karena menghindari aturan ini. Tidak ada keajaiban tentang tanda seru - ini hanya membuat pengenal fragmen yang nyaman karena sangat berbeda dengan fragid biasa dan tidak mungkin cocok dengan idatau namedari elemen di halaman Anda. Memang, kita bisa meletakkan hampir semua hal setelah hash; satu-satunya fragid yang tidak cukup adalah string kosong, kata 'top', atau string yang cocok nameatau idatribut elemen pada halaman.
Lebih tepatnya, kita hanya membutuhkan pengenal fragmen yang akan menyebabkan kita gagal ke langkah 8 dalam algoritme berikut untuk menentukan bagian yang ditunjukkan dari dokumen dari fragid:
Terapkan algoritme pengurai URL ke URL, dan biarkan fragid menjadi komponen fragmen dari URL yang diurai.
Jika fragidstring kosong, maka bagian dokumen yang ditunjukkan adalah bagian atas dokumen; hentikan algoritme di sini.
Membiarkan fragid bytesmenjadi hasil decoding persen fragid.
Membiarkan decoded fragidmenjadi hasil penerapan algoritma dekoder UTF-8 ke fragid bytes. Jika dekoder UTF-8 mengeluarkan kesalahan dekoder, batalkan dekoder dan lompat ke langkah berlabel no decoded fragid.
Jika ada elemen di DOM yang memiliki ID yang sama persis dengan decoded fragid, maka elemen pertama dalam urutan hierarki adalah bagian dokumen yang ditunjukkan; hentikan algoritme di sini.
Tidak ada fragid yang didekodekan : Jika ada elemen di DOM yang memiliki atribut nama yang nilainya persis sama dengan fragid( bukandecoded fragid ), maka elemen pertama dalam urutan hierarki adalah bagian yang ditunjukkan dari dokumen; hentikan algoritme di sini.
Jika fragid adalah pencocokan tidak peka huruf besar / kecil ASCII untuk string tersebut top, maka bagian dokumen yang ditunjukkan adalah bagian atas dokumen; hentikan algoritme di sini.
Jika tidak, tidak ada bagian dokumen yang ditunjukkan.
Selama kita mencapai langkah 8 dan tidak ada bagian dokumen yang ditunjukkan , aturan berikut mulai berlaku:
Jika tidak ada bagian yang ditunjukkan ... maka agen pengguna tidak boleh melakukan apa pun.
itulah sebabnya browser tidak menggulir.