2010-12-08 10 views
26

私が最も効果的なソリューションです防ぎアンカー行動

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

を使用してアンカータグI`mのデフォルトの動作を防ぎたい場合は?

答えて

19

優雅に分解液の例:

<a href="no-script.html" id="myLink">link</a> 

<script> 
document.getElementById("myLink").onclick = function() { 
    // do things, and then 
    return false; 
}; 
</script> 

デモ:http://jsfiddle.net/karim79/PkgWL/1/

+0

エラーがで発生した場合、これはまた、*物事を行う*ノースクリプトのページにユーザーを取るか、リスナーが割り当てられる前に、ユーザーがリンクをクリックした場合。後者は実際にDOMの中で互いの直後にいることをあなたの例のように意図している場合は起こりそうにないでしょうが、それはページのレンダリング速度とブレーク検証(HTML5の仕様で変更されていない限り)私はそれがあれば気にしません!)通常、これらのものはDOMReadyですぐに割り当てられ、場合によってはユーザがリンクをクリックするためのかなりのウィンドウを残すことができます。 –

10

ます。また、このことができます:あなたはも行うことができますjqueryのを使用している場合

<a href="#" onclick="return false;">link</a> 
23

これは、素敵なアプローチです:

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

<script type="text/javascript"> 
    $("#link").click(function(ev) { 
     ev.preventDefault(); 
    }); 
</script> 

のpreventDefaultは、フォームを送信防止にも役立ちますが

9

ブラウザがどこからでもリンクをたどることを決して望んでいないなら、私はあなたがもっとも簡単で安全なソリューションだと言います。

確かに、他のソリューションのヒープを使用すると、JavaScriptで適用できるがあるが、

  • DOMが完全にロードされていないときにイベントがある、DOMReadyで以降割り当てられている場合、他のほとんどの方法は、失敗する可能性があります一般。
  • クリックイベントリスナーはリンクを処理します(これは、リンクがブラウザに追従されないようにするために一般的です)。クリックを処理するjavascriptでエラーが発生した場合、ステートメントの最後にある可能性のあるreturn false;またはpreventDefaultは実行されず、ブラウザは#の場合のみリンクをたどります。
1

ここでは、これを停止するための非常に簡単な方法です。

(function($) { 
    $('a[href="#"]').click(function(e) { 
     e.preventDefault(); 
    }); 
})(jQuery); 
関連する問題