2012-01-07 5 views
0

私は現在、そうのように、私のクリックイベントを処理するためにjavscriptとクラスを使用しています:no-javascript用のhrefの代替はありますか?

<a class="forgotten" href="#">Forgot your password?</a> 

$('.forgotten').click(function(){ 
    location.href = "forgotten.php"; 
    return false; 
}); 

は、最初にその機能を評価する方法はあるとJavaScriptが無効になっている場合は、単にforgotten.phpに行きますか?

私は簡単にクラスを削除し、hrefにforgotten.phpを追加することができますが、私はいくつかの私のサイトを壊すのでjqueryアドレスを大量に使用しています。

+1

あなたのjavascriptには、単に 'href =" forgotten.php "'以上の利点がありますか? –

答えて

6

確かに、それはユーザーがJavaScriptを無効にしている場合でも動作するようにあなたのマークアップを設計することによって開始:

<a class="forgotten" href="/forgotten.php">Forgot your password?</a> 

、その後、あなたは控えめなJavaScriptを使用することができます

明らか
$(function() { 
    $('.forgotten').click(function(evt) { 
     evt.preventDefault(); 
     window.location.href = "forgotten.php"; 
    }); 
}); 

あなたはおそらくしたいですこのjavascript .click()ハンドラでは、無効なjavascriptでアンカーが既に実行しているのは、単にforgotten.phpにリダイレクトされている以外のものです。例えば、いくつかの進歩的な強化を行うことができます。いくつかのアニメーションや何かをAJAX呼び出しのように。

ユーザーがJavaScriptを無効にした場合、彼は単にforgotten.phpにリダイレクトされます。もし彼がそうでなければ、あなたの想像力を行動に移してください。

+2

クリックイベントで 'return false'の代わりに' .preventDefault() 'を使うべきです。 –

+0

@タンデュー、良い点、答えが更新されました。 –

+0

優れたアドバイスとそれは素晴らしい動作します! clickイベントはjqueryアドレスモジュールを満足させるためのものなので、実際には何も起こりません。 – Paul

0

hrefとして#を使用することは悪い習慣であり、やり方ではありません。

#をforgotten.phpに置き換えるだけで、あなたのコードはあなたが望むものとまったく同じように動作します。 JSが最初にトリガーされます。

0

javascriptが無効になっているシナリオに対処したい場合は、逆のアプローチを採用します。 Javascriptがない場合と同じようにHTMLを書式設定します。次に、ドキュメントの読み込み後に好きなようにjavascriptを使用してフォーマットします。

関連する問題