制作不执行任何操作(实际上不执行任何操作)的HTML链接


87

我想要一个不起作用的链接。我不要这个:

<a href="#">

因为这样URL变为something.com/whatever/#

我想要链接的唯一原因是使用户可以看到他们可以单击文本。JavaScript正在用于执行某些操作,因此我不需要将该链接放到任何地方,但我需要使其看起来像一个链接!

我可以使用一些数据属性,并告诉我CSS使元素看起来像链接(如果它们具有此属性),但这似乎有点过头了。


这有什么错something.com/whatever/#
Charles Sprayberry

1
您可以给它一个href为空白,然后在javascript中返回false。但它更多的语义,如果你只是光标属性更改为pointer在你的CSS
JohnP

@CharlesSprayberry:在某些情况下您不想要它。
PeeHaa

同样,在ux.stackexchange.com上问这也是一个很好的问题。

1
:这个问题是在这里更深入讨论stackoverflow.com/questions/134845/...
DawnPaladin

Answers:


124

以下内容将阻止您的href被运行

<a href="#" onclick="return false;">

如果您使用的是jQuery,event.preventDefault()可以使用


导致其他onclick事件被取消。
Rauli Rajande

5
使页面滚动到顶部。
David Hempy

@DavidHempy我没有这个经验。哪个浏览器?
Curt's

1
@curt Google Chrome版本63.0.3239.84(正式版本)(64位)(或者可能是两周前的稍旧版本)
David Hempy

这不适用于wordpress插件滚动到ID且链接仍会起作用。在这种情况下,将是多虫的东西,它将在页面顶部重定向您。
Jiri Otoupalイりトトーー

88

试试这个:

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

4
+1,但快速提问:javascript:void和之间有区别javascript:void(0)吗?
亚当·拉基斯

3
如果您尝试使用不带参数的javascript:void(0),则将出现SyntaxError,并且所有脚本都将失败。
alexdets

3
@alexdetsjavascript:void()将为SyntaxError,但javascript:void仅返回undefined-与相同void(0)。亚当,据我所知,void并且void(0)在功能上等同于这种用途。---编辑:虽然我看到,暗示它可能会重新加载页面的其他意见..
andytuba

3
大写javaScript / javascript / JavaScript / Javascript是否重要?
Tim Truston

2
@TechyTimo否,大写并不重要,实际上不应该大写。我已经提交了修改。
Weston Ganger

28

在HTML5中,这非常简单。只需忽略该href属性。

<a>Do Nothing</a>

MDN的tag href属性

href

这是用于定义超文本源链接的锚的唯一必需属性,但在HTML5中不再需要。


那悬停的手形光标呢?

对于a带有no的标签,浏览器的默认样式可能不会将光标更改为指针href。您可以使用以下CSS进行通用更改。

a {
    cursor: pointer;
}
<a>Do Nothing</a>

但是,最好对其进行更多选择,并将其仅应用于要向其中添加事件处理程序的元素。


将其设置为Tab焦点该怎么办?

只需添加tabindex="0"到元素。

<a tabindex="0">Do Nothing</a>


使用a没有链接的标签是否有意义?

通常不行,最好改用button元素,然后用CSS设置样式。但是无论您使用什么,都尽量避免使用任意元素div,因为这根本不是语义。


1
使用bootstrap 4时,没有href的链接不会被设置为链接。
user3413723

13

不要将其设为链接(尽管更喜欢这样做),并不要使用CSS对其进行样式设置,以使其看起来像一个链接:

p.not-a-link { text-decoration: underline; cursor: pointer } 

甚至更好的方法是使其成为一个链接,并使用e.preventDefault()用于阻止该链接的javascript函数。

href还将链接添加到,以便未启用JS的用户仍可以使用它(作为后备)。


1
+1随着IE5.5辩论结束,跨度是否会比ap好?
amelvin 2011年

1
我更喜欢跨度。P可以创造新的行,而跨度则不能
Ronnie Oosting 17/09/29

9

<a href="javascript:;">Link text</a> -那就是我通常使用的


5
这不会在某些浏览器中重新加载页面吗?
Curt

@Curt:您说得对,读错了问题。您已经发表了评论:-)
Scott Brown

...而且我有2张选票,包括编辑后的1张!苛刻!
斯科特·布朗

删除第一个代码,然后将允许我删除我的弃权票:)它不会让我删除Downvote,其“锁定”状态
Curt

1
这会影响哪些浏览器,是否仍然是一个问题?与相比void(0),它更可取,因为它显示在状态栏中。我这么说是因为我已经将用户标记为错误/错误(显然不是),所以我认为拥有它会使他们感到困惑。
chunk_split

4

我们可以使用javascript void实现这一点,它通常涉及对表达式的求值并返回undefined,其中包括添加javascript:void(0);href。

void运算符通常仅用于获取未定义的原始值,通常使用“ void(0)”(等效于“ void 0”)。在这些情况下,可以改用undefined全局变量(假设尚未将其分配给非默认值)。

a {
  text-decoration: initial;
}
<a href="javascript:void(0);"> This link actually does nothing when clicked</a>


2

@Curt的答案会起作用,但是您可以在CSS中使用光标样式,使其看起来像一个链接,而不会产生虚假链接。根据浏览器的一致性使用手或指针。

跨浏览器一致的指针css(来自游标样式指南):

element {
    cursor: pointer;
    cursor: hand;
}

@PeeHaa仅在希望它在IE5.5及更早版本中工作时才使用指针!
amelvin

3
这就是我所说的!请不要提及IE5.5:P更严重的是IE5.5的份额是0.17%。如果人们仍然使用该版本,则他们不应该浏览网络
PeeHaa

2

没有人提到的一种方法是将href指向一个空的本地文件位置,如下所示

<a href='\\'>my dead link</a>

为什么?如果您使用诸如react或angular的框架,则编译器会吐出一些警告,这可能会使您的日志或控制台变脏。该技术还将防止机器人或蜘蛛程序错误地链接事物。


-1

不要使用<a>...而是使用<span class='style-like-link'> ,然后使用该类为其设置样式。


使用没有链接本身的锚标记并没有什么错,更不用说在很多情况下这样做更有意义,而不是用伪锚标记代替它。更不用说将一个元素造型为另一个元素,但以不同的方式实现,势必会在将来引起维护问题
Tim

同意 这完全取决于用例和您要完成的工作。我只是将此作为答案,以帮助其他人知道这是一个选择。
布莱斯

如果是这种情况,我建议您对其进行编辑以使用表明它是一种可能替代方法的语言,而不是用大写字母声明这样做不使用标准锚标记,因为这样做非常有效
Tim
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.