何もしない(文字通り何もしない)HTMLリンクを作成する


87

何もしないリンクが欲しい。私はこれを望んでいません:

<a href="#">

URLがsomething.com/whatever/#。になるためです。

リンクが必要な唯一の理由は、ユーザーがテキストをクリックできることを確認できるようにするためです。JavaScriptは何らかのアクションを実行するために使用されているため、リンクをどこにでも移動する必要はありませんが、リンクのように見える必要があります。

いくつかのデータ属性を使用して、CSSに、要素にこの属性がある場合はリンクのように見せるように指示することもできますが、少しやり過ぎのようです。


何が問題になっていsomething.com/whatever/#ますか?
チャールズスプレーベリー2011年

1
あなたはそれに空白のhrefを与え、javascriptでfalseを返すことができます。ただしpointer、CSSでカーソルプロパティをに変更するだけの場合は、よりセマンティックになります
JohnP 2011年

@CharlesSprayberry:あなたがそれを望まない状況があります。
PeeHaa 2011年

これは、ux.stackexchange.comでも質問するのに適した質問です。

1
この質問ここでは詳しく説明している:stackoverflow.com/questions/134845/...
DawnPaladin

回答:


125

以下はあなたのhrefが実行されるのを防ぎます

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

jQueryを使用している場合は、を使用event.preventDefault()できます


追加のonclickイベントがキャンセルされます。
Rauli Rajande 2017

6
ページを一番上にスクロールさせます。
David Hempy 2017

@DavidHempy私はこれを経験していません。どのブラウザ?
Curt

1
@curt Google Chromeバージョン63.0.3239.84(公式ビルド)(64ビット)(または2週間前の少し古いバージョン)
David Hempy 2017

これはワードプレスプラグインのIDにスクロールしても機能せず、リンクは引き続き何かを行います。この場合、ページの上部にリダイレクトされるのはバグのあるものになります。
JiriOtoupalイリオトウパー

89

これを試して:

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

4
+1ですが簡単な質問:との間に違いはjavascript:voidありjavascript:void(0)ますか?
Adam Rackis 2011年

3
paramなしでjavascript:void(0)を使用しようとすると、SyntaxErrorが発生し、すべてのスクリプトが失敗します。
alexdets 2011年

3
@alexdetsjavascript:void()はSyntaxErrorになりますが、javascript:voidundefinedを返します-と同じvoid(0)です。アダム、私が知る限り、この使用法voidvoid(0)機能的に同等です。---編集:私は、それはページをリロードかもしれないヒント他のコメント...参照が
andytuba

3
javaScript / javascript / JavaScript / Javascriptをどのように大文字にするかは重要ですか?
Tim Truston 2016

2
@TechyTimoいいえ、大文字は関係ありません。実際、大文字にするべきではありません。編集を送信しました。
ウェストンガンガー2017

28

HTML5では、これは非常に簡単です。href属性を省略してください。

<a>Do Nothing</a>

タグhref属性のMDNから:

href

これは、ハイパーテキストソースリンクを定義するアンカーに必要な単一の属性でしたが、HTML5では不要になりました。


ホバーのハンドカーソルはどうですか?

ブラウザのデフォルトのスタイルでは、がないaタグの場合、カーソルがポインタに変更されない場合がありますhref。次のCSSを使用して、これを普遍的に変更できます。

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

ただし、それについてより選択的にし、イベントハンドラーを追加する予定の要素にのみ適用する方がおそらく良いでしょう。


タブフォーカス可能にするのはどうですか?

tabindex="0"要素に追加するだけです。

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


aリンクなしでタグを使用するのは理にかなっていますか?

通常はありませんbutton。代わりに要素を使用し、CSSでスタイルを設定することをお勧めします。ただし、使用するものが何であれ、divセマンティックではないため、可能な場合のように任意の要素を使用することは避けてください。


1
ブートストラップ4では、hrefを持たないリンクはリンクとしてスタイル設定されません。
user34137 2319

13

リンクにしないでください(ただし、リンクを作成することをお勧めします)。また、リンクのように見えるようにCSSでスタイルを設定します。

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

または、それをリンクにして、リンクe.preventDefault()を防ぐために使用されるjavascript関数を使用することをお勧めします。

また、hrefJSが有効になっていないユーザーでも引き続き使用できるように、リンクを追加します(フォールバックとして)。


1
+1 IE5.5の議論が終わったので、スパンはapよりも優れているでしょうか?
amelvin 2011年

1
私はスパンが好きです。Pは新しい行を作成できますが、スパンは作成できません
Ronnie Oosting 2017

9

<a href="javascript:;">Link text</a> -それは私が通常使用するものです


5
これはいくつかのブラウザでページをリロードしませんか?
Curt

@Curt:あなたは正しいです、質問を読み間違えました。あなたはそれから賛成のコメントを持っています:
スコットブラウン

...そして私はそれを編集した後の1つを含む2つの反対票を持っています!厳しい!
スコットブラウン

最初のコードを削除すると、反対票を削除できるようになります:)反対票、つまり「ロック」を削除することはできません
Curt

1
これはどのブラウザに影響しますか、それはもう問題ですか?これはvoid(0)ステータスバーに表示されるため、よりも優先されます。私はユーザーにバグ/エラーとしてフラグを立てているので(明らかにそうではありません)、それを持っていることは彼らを混乱させると思います。
chunk_split 2018年

4

これは、通常は式の評価を含みjavascript:void(0);、hrefの追加を含むundefinedを返すjavascriptvoidを使用して実現できます。

void演算子は通常、未定義のプリミティブ値を取得するためにのみ使用され、通常は「void(0)」(「void0」と同等)を使用します。このような場合は、代わりにグローバル変数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 2011年

3
それは私が言ったことです!IE5.5については言及しないでください:Pもっと深刻なことにIE5.5のシェアは0.17%です。人々がまだそのバージョンを使用している場合、Webを閲覧する価値はありません
PeeHaa 2011年

2

誰も言及していない1つの方法は、hrefをそのような空のローカルファイルの場所にポイントすることです。

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

どうして?reactやangularなどのフレームワークを使用している場合、コンパイラーはログやコンソールを汚す可能性のあるいくつかの警告を吐き出します。この手法は、ロボットやスパイダーが誤って物事をリンクするのを防ぎます。


-1

使用しないでください<a>...代わりに<span class='style-like-link'> 、クラスを使用してから、必要に応じてスタイルを設定してください。


リンク自体なしでアンカータグを使用することには何の問題もありません。もちろん、疑似アンカータグに置き換えるよりも、そうする方がはるかに理にかなっている場合が多いことは言うまでもありません。ある要素を別の要素のように見えるようにスタイリングすることは言うまでもありませんが、異なる方法で実装すると、将来的にメンテナンスの問題が発生することになります
Tim

同意しました。それは完全にユースケースとあなたが達成しようとしていることに依存します。私は、これがオプションであることを他の人が知るのを助けるための答えとしてこれを提供しただけです。
ブライス

その場合は、標準のアンカータグを使用しないことが完全に有効である場合は、大文字で示すのではなく、可能な代替手段を示す言語を使用するように編集することをお勧めします
Tim
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.