2011-06-29 7 views
7

jQueryコードをトリガーするためにクリックできるリンクがあります。何もターゲットにしないHREFリンクは、ハッシュまたはボイド(0)を使用したくありません。

現在、私はうまく機能

<a href="#" id="foo">Link</a> 

$('#foo').click(function(){ 
    // Do stuff 
}); 

を持っています。しかし、私はいつもこのようにハッシュを使って嫌いです。ページがちらつき、ハッシュがページのURLに追加されます。

1つの選択肢は、

<a href="javascript:void(0);" id="foo">Link</a> 

を使用することですが、私はまた、ブラウザのステータスバーにコードのその部分を見て嫌い。それは不粘着に見えます。私はむしろ持っているだろう何


は実際に動作しますが、そのような機能がないので、JavaScriptコンソールでのReferenceErrorをスロー

<a href="javascript:zoom();" id="foo">Link</a> 

のように、何もしませんjavascriptのプレースホルダの説明です。 何もしない関数の最小定義は何ですか?

他の方法はありますか?

私はちょうどリンクをスキップし、代わりに

<span id="foo" style="cursor:pointer;cursor:hand;">Link</span> 

のようなものを使用する必要がありますか?

+3

アクセシビリティ上の理由から、アンカーのようなスタイルのスパンを使用することはお勧めしません。 – ScottE

+2

おそらく、@patrick dwの答えと組み合わされた ''を使いたいでしょう。 – thirtydot

+0

@thirtydotそれです!見つけた – Mattis

答えて

15

event.preventDefault()[docs]メソッドを使用してください。

$('#foo').click(function(e){ 

    e.preventDefault(); 
    // Do stuff 
}); 

これにより、クリックするとハッシュが影響を受けなくなります。または、ハッシュを取り除き、CSSを使用してスタイルを設定します。

また、hrefが正常な劣化を処理するための実際のURLを指定することもできます。


何もしない関数の最小値の定義は何ですか?

はここでノーオペレーション機能です:

var noop = function(){}; 

...またはあなたはjQueryのを使用していることから、あなたはまた、単に空の関数であるjQuery.noop()[docs]方法を、使用することができます。

$.noop 
+2

+1:この答えでは、ハッシュタグを維持することができ、ページはちらつきません。 javascript:void(0)は無効です。 – Babiker

+1

恐ろしいパトリック、<3 – Mattis

1

あなたは、例えば、preventDefaultを使用することができます。

$('#foo').click(function(e){ 
    // Do stuff 
    e.preventDefault(); 
}); 
+1

これは動作しません。 preventDefault()は、クリックされたjQueryラップされた要素ではなく、イベントのメソッドです。 –

+0

@Rob Cowie:正直な間違い - 正しい、少し遅れても、決して賭けない。 –

+0

単純な間違いだったとします。 :) –

3

理想的には、リンクはJSが有効でないユーザのためのJavaScriptの機能を複製ページにリンクする必要があります。その後、preventDefaultは、他の回答が示しているように、実際のナビゲーションを防止します。

この場合意味がない場合は、href属性はオプションです。あなたはそれを完全に放置することができます。

+0

href属性が省略された場合、要素はもはやリンクになりません。 – RobG

+0

とにかくダミーの場所に行くと、実際にはリンクではありません。おそらく、ボタンを使うのは正しいでしょう。 – Eevee

3

これは不適切なリンクの使用です。クリックすると何かが起こるが、ナビゲーションは行われないことを示すボタンなどの要素を使用する必要があります。

+0

合意されていますが、この場合、リンクはグラフに添付されており、テキストの命名と配置のためにリンクがグラフオブジェクトに対してズーム操作を行うことは明らかです。また、この実装ではボタンが大きすぎます。一般的に、あなたは完全に正しいです。 – Mattis

関連する問題