我怎样才能创建一个空的HTML锚,因此页面不会“跳起来”当我点击它?
-
20-08-2019 - |
题
我工作的一些jQuery来隐藏/显示一些内容,当我点击一个链接。我可以创建类似:
<a href="#" onclick="jquery_stuff" />
但是,如果我点击该链接,而我向下滚动页面上,它会跳回页面顶部。
如果我做这样的事情:
<a href="" onclick="jquery_stuff" />
在页面将重新加载,这RID的的JavaScript已经进行的所有更改的页面。
像这样:
<a onclick="jquery_stuff" />
会给我期望的效果,但它不再显示为一个链接。是否有某种方式来指定一个空的锚,所以我可以指定一个JavaScript处理该事件onclick
,与网页上没有任何更改或移动滚动条?
解决方案
把一个 “返回false;”在第二个选项:
<a href="" onclick="jquery_stuff; return false;" />
其他提示
您需要return false;
后jquery_stuff
:
<a href="no-javascript.html" onclick="jquery_stuff(); return false;" />
这将取消的默认操作。
可以把简单地作为象下面这样:
<a href="javascript:;" onclick="jquery_stuff">
jQuery有内置在此称为preventDefault
其可以在这里找到的函数:
http://api.jquery.com/event.preventDefault/
下面是他们的示例:
<script>
$("a").click(function(event) {
event.preventDefault();
});
</script>
您也可以建立这样的链接:
<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>
检查eyelidlessness'注释(使用一个按钮,而不是一个锚)。正要张贴同样的建议。没有链接到资源和仅是一个锚执行脚本应作为一个按钮来实现。
停止把你的事件处理程序的HTML,并停止使用锚标记 不担任锚语义目的。使用一个按钮,并添加 点击你的JavaScript处理。例如:HTML
<button id="jquery_stuff">Label</button>
和JavaScript$('#jquery_stuff').click(jquery_stuff);
。您可以使用CSS样式化 按钮看起来像一个链接,通过去除填充,边框,边缘和 背景色,然后添加你的链接样式(如颜色, 文字修饰)。 - eyelidlessness年10月19 '10 17:40
<a href="javascript:;" onclick="jquery">link</a>
href
需要在那里的东西,如果你想让它不验证的HTML弹出错误。所述javascript:;
是一个很好的位置保持器。
如果你真的想使用#
:
<a href="#me" name="me" onclick="jquery">link</a>
小心的return false;
,它会暂停无论你正在做的默认行为。
此外,如果你的JS是像提交你可能会遇到在Internet Explorer中的问题。
<a href="javascript:// some helpful comment " onclick="jquery_stuff" />
我通常使用一个<span>
和风格它看起来像一个链接时,我需要完成这样的事情。
<a href="#" class="falseLinks">Link1</a>
<a href="#" class="falseLinks">Link2</a>
等。
JQUERY:
$(function() {
$("a.falseLinks").click(function() {
// ...other stuff you want to do when links is clicked
// This is the same as putting onclick="return false;" in HTML
return false;
})
});
@eyelidlessness是他说的方式有点杜希但他是对的。这是做的最彻底的方法。为什么使用jQuery,如果你再要回去香草的javascript的东西jQuery也更容易和更清洁的?
一般我做的:
<a style="cursor:pointer;" onclick="whatever();">Whatever</a>
这样如何:
<a href="#nogo" onclick="foo();">some text</a>