最近開發web項目,遇到一個問題 ,就是在<a>標簽加href="#",並增加onclick事件,頁面會自動在點擊該標簽綁定的元素時,自動跳轉到頁面頂部,在網上尋求了一番解決辦法后,總結下來有兩種比較常用的解決辦法:
(1):<a href="###" onclick="">
通常我們的寫法是href=“#”,默認的錨是#top 也就是網頁的上端,所以瀏覽器會在點擊事件后跳轉到頂部。此時用“##”或者“###”等都可以實現不回到頁面頂部,為什么呢,因為瀏覽器不認識啊,就默認不處理了。即此時只會響應點擊事件。
(2)<a href="javascript:void(0)" onclick="">
這種方式也可以避免回到頂部。我們可以使用void操作符指定超級鏈接,如javascript:void(document.form.submit())。表達式會被計算但是不會在當前文檔處裝入任何內容,void(0)計算為0,但在JavaScript上沒有任何效果,也就是說 <a href="javascript:void(0)">的效果同<a href="javascript:void(1)">的效果是一樣的。 關鍵是只要知道void是javascipt
自身的操作符,它表示的是只執行表達式,但沒有返回值! 如<a href="javascript:void(document.form.submit())">此時點擊事件就會提交一個表單。
javascript:void(0)要慎用:要執行某些處理,但是不整體刷新頁面的情況下,可以使用void(0),但是在需要對頁面進行refresh的情況下,那就要仔細了。其實我們可以這樣用<a href="javascript:void(document.form.submit())">,這句話會進行一次submit操作。那什么情況下用void(0)比較多呢,無刷新,當然是Ajax了,看一下Ajax的web頁面的話,一般都會看到有很多的void(0),所以在使用void(0)之前,最好先想一想,這個頁面是否需要整體刷新。