10 に答える
実行されていない JavaScript アクションへの論理的なフォールバックとして機能するページ上のフラグメントを参照できますか? もしそうなら、フォールバックとして機能する可能性のある を参照してページに<a href="#account">
置くことは非常に理にかなっています。id="account"
もう 1 つのオプションは、動的に読み込まれたコンテンツを直接参照することです。href
そうすれば、JavaScript で何を要求するかを何らかの方法でハードコーディングする代わりに、Ajax 呼び出しで を非常に便利に使用できます。<a href="/path/to/dynamic/content">
.
最後に、HTML に静的に含めることはまったくできませんが、<a href="#">
とにかく jQuery でのみ使用されるため、jQuery を使用してオンザフライで作成します。とにかく、プレースホルダーが JavaScript によってのみ使用される場合は、JavaScript のプレースホルダーでマークアップを汚染する必要はありません。
「ユーザーをページのトップに送る」について; ハンドラーreturn false
としてフックした関数からだけする必要があります。click()
$('a').click(function() {
// Do your stuff.
// The below line prevents the 'href' on the anchor to be followed.
return false;
});
<button>
JS のみのアクションには要素を使用する必要があります。デフォルトのアクション (フォーム内の場合) がありますが、フォームの外では、JS イベント ハンドラーをバインドするユーザー トリガー アクション専用です。
リンクではないリンクがある場合、おそらくそれらはリンクであってはなりませんか? :-) デフォルトの動作 (フォーム外) を持たない別の UI 要素を検討することbutton
もできます (ボタンのスタイルをかなりの程度まで設定できます)。または、または同様のものを使用することもできますがspan
、適切なアクセシビリティ情報 ( ARIA などrole="link"
) を設定して、スクリーン リーダー (およびブラウザーのタブ移動) を台無しにしないようにしてください。
ただし、 を引き続き使用する場合は<a href="#">...</a>
、 を呼び出すevent.preventDefault();
か返すハンドラーをそれらにアタッチするだけfalse
です。
アンカーがjavascriptを持っていない人にとって役に立たない場合、彼らはそれをまったく見るべきではありません。
最良の代替策は、ページの読み込み時にjQueryを使用してこれらのリンクを生成することです。そうすれば、それらを表示するのは、それらを使用する人だけです。
この場合、href="#"
イベントハンドラーがで終了する限り、が続くことはないため、持っていても問題return false;
ありhref
ません。
#
結構です。しかし、トリガーされるコールバックはreturn false
.
// assigning a click callback to all anchors
$('a').click(function(evt){
//... do stuff
return false; // avoid jump to '#'
})
私は使用することを好みます:
<a href="javascript:">foo</a>
実際に部分テンプレートをロードするための ajax 呼び出しでない限り、その場合は次のようなものを使用します。
<a href="/link/to/page" onClick="ajax_request_to_partial(); return false;">foo</a>
onclick イベントで false を返すことにより、サイトが再読み込みされないようにしますが、新しいページで URL を開くために引き続き使用できます。
return false;
これを使用して、ブラウザがページのトップに送信するのを停止しますか?
クリック時に何らかのアクションをバインドする場合、 preventDefault() を呼び出して、ユーザーがページの上部に送信されないようにすることができます
$("a.clickable").live('click',function(){$(this).doSome(); $(this).preventDefault()});