如何制作锚标签什么都没有?

ahm*_*med 145 html jquery

我使用jQuery,我需要让一些锚标签不执行任何操作.

我通常这样写:

<a href="#">link</a>
Run Code Online (Sandbox Code Playgroud)

但是这指的是页面顶部!

zai*_*ius 256

有一些不完美的解决方案:

1.链接到假锚

<a href="#">
Run Code Online (Sandbox Code Playgroud)

问题:单击链接会跳回页面顶部

2.使用"a"以外的标签

使用span标记并使用jquery处理单击

问题:打破键盘导航,必须手动更改悬停光标

3.链接到javascript void函数

<a href="javascript:void(0);">
<a href="javascript:;">
Run Code Online (Sandbox Code Playgroud)

问题:在IE中链接图像时中断

由于这些都有他们的问题,我已经解决的解决方案是链接到假锚,然后从onClick方法返回false:

<a href="#" onClick="return false;">
Run Code Online (Sandbox Code Playgroud)

不是最简洁的解决方案,但它解决了上述方法的所有问题.

  • @eugene这个问题现在已经有3年了,但IE用于使图像在被void函数链接包围时消失.不确定什么时候修复,但它在IE10中工作,这是我已经安装的.我个人现在使用`<a href="javascript:;">` (14认同)
  • `在IE中链接图像时中断了`这是什么意思? (7认同)
  • 看来`href ="javascript:"`也足够了,适用于最新的主流浏览器.不需要分号,事实上PhpStorm甚至建议删除它. (5认同)
  • 我通常使用javascript:void(0); 方法,因为使用#在鼠标悬停时显示Firefox栏中的当前URL,这可能会误导用户. (2认同)

Tys*_*son 97

如果你不想让它指向任何东西,你可能不应该使用<a>(锚)标记.

如果您希望某些内容看起来像链接但不像链接那样,最好使用适当的元素(例如<span>),然后使用CSS设置样式:

<span class="fake-link" id="fake-link-1">Am I a link?</span>

.fake-link {
    color: blue;
    text-decoration: underline;
    cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)

另外,鉴于您标记了此问题"jQuery",我假设您要附加点击事件处理程序.如果是这样,只需执行与上面相同的操作,然后使用类似以下JavaScript的内容:

$('#fake-link-1').click(function() {
    /* put your code here */
});
Run Code Online (Sandbox Code Playgroud)

  • 这有一个问题:它不允许选项卡导航. (36认同)
  • 请注意(正如Iraimbilanja所指出的)这里的span方法禁用了使用键盘调用函数的可能性,我认为这是一个可用性问题. (6认同)
  • 这是一个快速解决方案:非链接元素上的tabindex ="0"将启用大多数现代浏览器中的键盘导航. (4认同)
  • 也是一个可访问性问题.您可以使用按钮元素(从JavaScript生成,因此非JS用户不会破坏控件)来解决它. (3认同)

Phi*_*ert 38

要使它什么都不做,请使用:

<a href="javascript:void(0)"> ... </a>
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`&lt;a href="javascript:;"&gt;`。PS 不适用于 `target=_blank` (2认同)

Oli*_*Oli 35

处理此问题的正确方法是在处理链接时使用jQuery"中断"链接

HTML

<a href="#" id="theLink">My Link</a>
Run Code Online (Sandbox Code Playgroud)

JS

$('#theLink').click(function(ev){
    // do whatever you want here

    ev.preventDefault();
    ev.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

最后两个调用会停止浏览器解释点击.

  • 虽然这听起来像是"正确的",因为它会阻止事件冒泡,但"返回错误"则不那么冗长并且做同样的事情.你想要做的唯一一次就是你已经通过jQuery注册了点击链接的事件处理程序. (5认同)

Kri*_*erA 22

什么都没有意思?

<a href='about:blank'>blank page</a>
Run Code Online (Sandbox Code Playgroud)

要么

<a href='whatever' onclick='return false;'>won't navigate</a>
Run Code Online (Sandbox Code Playgroud)


Pun*_*jar 21

有很多方法可以做到这一点

不要添加和href属性

<a name="here"> Test <a>
Run Code Online (Sandbox Code Playgroud)

您可以添加onclick事件而不是href之类的

<a name="here" onclick="YourFunction()"> Test <a>
Run Code Online (Sandbox Code Playgroud)

或者你可以添加像这样的void函数,这将是最好的方法

<a href="javascript:void(0);"> 
<a href="javascript:;">
Run Code Online (Sandbox Code Playgroud)


Rut*_*ani 14

我想你可以试试

<a href="JavaScript:void(0)">link</a>
Run Code Online (Sandbox Code Playgroud)

我在这里看到的唯一问题是高级浏览器安全性可能会提示执行javascript.

虽然这是比较容易的方式之一

<a href="#" onclick="return false;">Link</a>
Run Code Online (Sandbox Code Playgroud)

这应该谨慎使用

阅读本文以获取一些指示https://web.archive.org/web/20090301044015/http://blog.reindel.com/2006/08/11/a-hrefjavascriptvoid0-avoid-the-void


aro*_*oss 13

应该更新此答案以反映新的Web标准(HTML5).

这个:

<a tabindex="0">This represents a placeholder hyperlink</a>
Run Code Online (Sandbox Code Playgroud)

...是有效的HTML5.tabindex属性使其像普通超链接一样可以进行键盘调焦.你可以使用span前面提到的元素,但我发现使用a元素更优雅.

请参阅:http://dev.w3.org/html5/markup/a.html
和:http://www.w3.org/html/wg/drafts/html/master/links.html#attr-hyperlink-href


Mil*_*jar 12

以下是<a>tag的hreftag属性引用的三种方法:

<a href="JavaScript:void(0)"> link </a>

<a href="javascript:;">link</a >

<a href="#" onclick="return false;"> Link </a>
Run Code Online (Sandbox Code Playgroud)


Con*_*ell 5

我知道这是一个老问题,但我想还是要加上两分钱:

这取决于链接的功能,但是通常,我会将链接指向可能显示/执行相同操作的URL,例如,如果您要弹出一些有关框的信息:

<a id="about" href="/about">About</a>
Run Code Online (Sandbox Code Playgroud)

然后用jQuery

$('#about').click(function(e) {
    $('#aboutbox').show();
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

这样,非常老的浏览器(或禁用了JavaScript的浏览器)仍可以导航到单独的“关于”页面,但是更重要的是,Google还将选择此页面并对“关于”页面的内容进行爬网。


pat*_*zzi 5

唯一对我有用的是以上内容的组合:

首先liul

<li><a onclick="LoadTab2_1()" href="JavaScript:void(0)">All Assigned</a></li>
Run Code Online (Sandbox Code Playgroud)

然后在LoadTab2_1中我手动切换选项卡div。

$("#tabs-2-1").hide();
    $("#tabs-2-2").show();
Run Code Online (Sandbox Code Playgroud)

这是因为断开连接也会断开选项卡中的操作。

当主选项卡发生更改时,您还需要手动设置选项卡样式。

$("#secTab1").addClass("ui-tabs-active").addClass("ui-state-active").addClass("ui-state-hover").addClass("ui-state-focus");
    $("#secTab1 a").css("color", "#ffffff");
Run Code Online (Sandbox Code Playgroud)


bea*_*end 5

确保您要停止的所有链接都具有href="#!"(或真正想要的任何链接),然后使用此链接:

jq('body').on('click.stop_link', 'a[href="#!"]',
function(event) {
     event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)


tee*_*tee 5

您可以拥有一个a没有href属性的 HTML 锚点(标签)。离开href属性 & 它不会链接到任何东西:

<a>link</a>
Run Code Online (Sandbox Code Playgroud)