我有一个包含一些jQuery函数的页面。页面上的HTML看起来像这样:
<a href="#" class="service">Open</a>
当我点击“打开”按钮时,一个隐藏的面板会滑出。jQuery本身工作得很好,但是当我点击按钮时,它也会带我到页面顶部。
这是默认行为吗?如何防止每个 href="#"
都带我回到页面顶部?
注意:我可以添加ID并告诉 href 转到那个ID。但出于各种原因(包括添加不必要的代码),我不想这样做。
<a href="#!" class="service">Open</a>
e.preventDefault();
(假设e
是保存事件的变量名称):$('.service').click(function(e) {
e.preventDefault();
});
return false
来忽略浏览器默认的滚动到页面顶部。 - bafromcapreventDefault
就足够了;正如它的名字所示,它会阻止默认操作(跟随锚点并转到页面顶部)发生。return false
也可以做到这一点,并且还相当于调用stopPropagation
,它停止事件向父元素传播;但是,如果你只想阻止浏览器滚动到页面顶部,不需要使用return false
。 - icktoofay$('a[href="#"]').click(function(e) {e.preventDefault(); });
- Grant<a href="#" onclick="return false;" class="service">Open</a>
或
$(document).ready(function()
{
var a = $(".service");
a.click(function()
{
return false;
});
});
或者
$(document).ready(function()
{
var a = $(".service");
a.click(function(e)
{
e.preventDefault();
});
});
或者
<a href="#" onclick="event.preventDefault();" class="service">Open</a>
$('service').click(function() {
<your code>
return false;
});
return false
重写了'a'标签的标准行为,当单击时它会阻止浏览器返回到页面顶部。