这是因为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) –