如何创建一个空的 HTML 锚点,以便页面不会“跳转” 当我点击它时?
我正在研究一些 JQuery,以便在单击链接时隐藏/显示一些内容。 我可以创建类似的内容:
<a href="#" onclick="jquery_stuff" />
但是,如果我在页面上向下滚动时单击该链接,它将跳回页面顶部。
如果我执行以下操作:
<a href="" onclick="jquery_stuff" />
页面将重新加载,这将消除页面上 javascript 所做的所有更改。
像这样的东西:
<a onclick="jquery_stuff" />
会给我想要的效果,但它不再显示为链接。 有没有办法指定一个空锚点,以便我可以将 JavaScript 处理程序分配给 onclick 事件,而不需要更改页面上的任何内容或移动滚动条?
I'm working on some JQuery to hide/show some content when I click a link. I can create something like:
<a href="#" onclick="jquery_stuff" />
But if I click that link while I'm scrolled down on a page, it will jump back up to the top of the page.
If I do something like:
<a href="" onclick="jquery_stuff" />
The page will reload, which rids the page of all the changes that javascript has made.
Something like this:
<a onclick="jquery_stuff" />
Will give me the desired effect, but it no longer shows up as a link. Is there some way to specify an empty anchor so I can assign a javascript handler to the onclick
event, without changing anything on the page or moving the scrollbar?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
放一个“return false;” 关于第二个选项:
Put a "return false;" on the second option:
您需要在
jquery_stuff
之后return false;
:这将取消默认操作。
You need to
return false;
after thejquery_stuff
:This will cancel the default action.
您可以简单地如下所示:
You can put simply as like below:
jQuery 有一个内置的函数,名为
preventDefault
,可以在此处找到:http://api.jquery.com/event.preventDefault/
这是他们的示例:
您可以还可以像这样构建链接:
jQuery has a function built in for this called
preventDefault
which can be found here:http://api.jquery.com/event.preventDefault/
Here's their example:
You can also build the link like this:
检查无眼睑的评论(使用按钮,而不是锚点)。 正要发布同样的建议。 不链接到资源而仅执行脚本的锚应该实现为按钮。
Check eyelidlessness' comment (use a button, not an anchor). Was just about to post the same advice. An anchor that doesn't link to a resource and merely executes a script should be implemented as a button.
如果您希望
href
不希望在 html 验证器中弹出错误,则需要在其中添加一些内容。javascript:;
是一个很好的占位符。如果您确实想使用
#
:请小心
return false;
,它会停止您正在执行的任何操作的默认行为。另外,如果你的 js 就像提交一样,你可能会在 Internet Explorer 中遇到问题。
href
requires something in there if you want it to not pop up errors in validators for html. Thejavascript:;
is a good place holder.If you really want to use the
#
:Be careful with the
return false;
, it halts default behaviours of whatever you are doing.Also if your js is like a submit you may run into problems in internet explorer.
当我需要完成这样的事情时,我通常使用
并将其样式设置为看起来像链接。
I usually use a
<span>
and style it to look like a link when I need to accomplish something like this.等等..
JQUERY:
@eyelidless 他说的方式有点愚蠢,但他是对的。 这是最干净的方法。 如果您想回到普通的 Javascript 来使用 jQuery 更简单、更干净的东西,为什么还要使用 jQuery?
etc..
JQUERY:
@eyelidlessness was a bit douchy in the way he said it but he was right. This is the cleanest way to do it. Why use jQuery if you're then gonna go back to vanilla Javascript for stuff jQuery does easier and cleaner?
通常我会这样做:
Usually I do:
我将使用
I would use a
<button>
element and plain JavaScript to achieve what you are after. If you insist, however, here's an alternative approach to the accepted answer: