這是因爲href="#"
告訴瀏覽器鏈接被點擊時跳轉到頁面頂部。
您可以防止默認操作從你onclick
屬性處理程序返回false
:
<a href="#" onclick="toggle_visibility('foo');return false;">School Area</a>
但是當你正在使用jQuery,可以考慮安裝該事件處理動態(甚至使用事件代表團) ,然後用preventDefault
:
<a href="#" class="toggle-vis" data-visibility="foo">School Area</a>
那麼這裏有一個委託處理程序:
$(document.body).on("click", ".toggle-vis", function(e) {
e.preventDefault();
toggle_visibility(this.getAttribute("data-visibility"));
});
請注意data-visibility
屬性如何控制我們切換的內容。
你會得到別人告訴你改變這一行:
toggle_visibility(this.getAttribute("data-visibility"));
到
// Only do this if you understand what `data` does
toggle_visibility($(this).data("visibility"));
但data
不只是data-*
元素的訪問,它更(並且少於)。如果不需要該工作設置功能,沒有必要來包裝元素在jQuery的實例,並調用data.
但是,如果你喜歡更多的jQuery™:
toggle_visibility($(this).attr("data-visibility"));
也適用。
的可能的複製[如何防止「#」鏈接的點擊來自jQuery的跳躍頁首] (http://stackoverflow.com/questions/3252730/how-to-prevent-a-click-on-a-link-from-jumping-to-top-of-page-in-jquery) –