如何创建一个空的 HTML 锚点,以便页面不会“跳转” 当我点击它时?

发布于 2024-07-12 13:37:11 字数 478 浏览 9 评论 0原文

我正在研究一些 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

孤千羽 2024-07-19 13:37:12

放一个“return false;” 关于第二个选项:

<a href="" onclick="jquery_stuff; return false;" />

Put a "return false;" on the second option:

<a href="" onclick="jquery_stuff; return false;" />
满栀 2024-07-19 13:37:12

您需要在jquery_stuff之后return false;

<a href="no-javascript.html" onclick="jquery_stuff(); return false;" />

这将取消默认操作。

You need to return false; after the jquery_stuff:

<a href="no-javascript.html" onclick="jquery_stuff(); return false;" />

This will cancel the default action.

老娘不死你永远是小三 2024-07-19 13:37:12

您可以简单地如下所示:

<a href="javascript:;" onclick="jquery_stuff">

You can put simply as like below:

<a href="javascript:;" onclick="jquery_stuff">
动听の歌 2024-07-19 13:37:12

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>

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:

<script>
$("a").click(function(event) {
    event.preventDefault();
});
</script>

You can also build the link like this:

<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>
你爱我像她 2024-07-19 13:37:12

检查无眼睑的评论(使用按钮,而不是锚点)。 正要发布同样的建议。 不链接到资源而仅执行脚本的锚应该实现为按钮。

停止将事件处理程序放入 HTML 中,并停止使用锚标记
不服务于锚语义目的。 使用按钮并添加
单击 Javascript 中的处理程序。 示例:HTML <按钮
id="jquery_stuff">Label
和 JavaScript
$('#jquery_stuff').click(jquery_stuff);。 您可以使用 CSS 来设置样式
按钮看起来像一个链接,通过删除填充、边框、边距和
背景颜色,然后添加链接样式(例如颜色和
文本装饰)。 – 无眼睑 2010 年 10 月 19 日 17:40

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.

Stop putting your event handlers in HTML, and stop using anchor tags
that don't serve anchor semantic purposes. Use a button and add the
click handler in your Javascript. Example: HTML <button
id="jquery_stuff">Label</button>
and JavaScript
$('#jquery_stuff').click(jquery_stuff);. You can use CSS to style the
button to look like a link, by removing padding, borders, margin and
background-color, then adding your link styles (eg. color and
text-decoration). – eyelidlessness Oct 19 '10 at 17:40

荒芜了季节 2024-07-19 13:37:12
<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:;" onclick="jquery">link</a>

href requires something in there if you want it to not pop up errors in validators for html. The javascript:; is a good place holder.

If you really want to use the #:

<a href="#me" name="me" onclick="jquery">link</a>

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.

人间不值得 2024-07-19 13:37:12
<a href="javascript:// some helpful comment " onclick="jquery_stuff" />
<a href="javascript:// some helpful comment " onclick="jquery_stuff" />
夜司空 2024-07-19 13:37:12

当我需要完成这样的事情时,我通常使用 并将其样式设置为看起来像链接。

I usually use a <span> and style it to look like a link when I need to accomplish something like this.

演出会有结束 2024-07-19 13:37:12
  <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;
    })
  });

@eyelidless 他说的方式有点愚蠢,但他是对的。 这是最干净的方法。 如果您想回到普通的 Javascript 来使用 jQuery 更简单、更干净的东西,为什么还要使用 jQuery?

  <a href="#" class="falseLinks">Link1</a>
  <a href="#" class="falseLinks">Link2</a>

etc..

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 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?

拥有 2024-07-19 13:37:12

通常我会这样做:

<a style="cursor:pointer;" onclick="whatever();">Whatever</a>

Usually I do:

<a style="cursor:pointer;" onclick="whatever();">Whatever</a>
挖个坑埋了你 2024-07-19 13:37:12

我将使用

<a href="#nowhere" onclick="console.log('Hello, world!');">This link goes nowhere because the target doesn't exist.</a>

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:

<a href="#nowhere" onclick="console.log('Hello, world!');">This link goes nowhere because the target doesn't exist.</a>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文