2016-05-03 4 views
-1

私はindex.phpsettings.phpの2つのファイルを持っています。 index.phpには、クリック時にユーザーをsettings.phpにリダイレクトするボタンがあります。なぜjqueryイベントコードは常に関数でラップする必要がありますか?

<div id="settings"> 
    Settings 
</div> 

<script> 
$("#settings").on 
(
    "click", 
    function() 
    { 
     window.location.href = "settings.php"; 
    } 
); 
</script> 

クリックで再びindex.phpにリダイレクトsettings.phpのボタンもあります。

<div id="menü"> 
    Menü 
</div> 

<script> 
$("#menü").on("click", redirect("index.php")); 

function redirect(url) 
{ 
    window.location.replace(url); 
} 
</script> 

しかし、私はボタンの「設定」、次にsettings.phpがロードされると、私はすぐに再びindex.phpにリダイレクトをクリックした場合。私はこのコードを使用している場合

しかし、それはすぐにリダイレクトされません。

$("#menü").on("click", function() { redirect("index.php");}); 

は、なぜ私はいつも私がこのようなイベントを使用している場合function()ですべてをラップする必要がありますか?

+1

'$("#menü ")。on(" click "、redirect(" index.php "));は即座にその機能を起動します。だから、あなたは 'function(){..}'でそれをラップするか、 '$("#menü ")を実行する必要があります(" click "、{url:" index.php "}、redirect)。 'あなたの' redirect'関数に渡された引数を読み込みます。 – putvande

+1

CSSでカスタマイズされた簡単なリンクは、これ以上のネイティブで同じスクリプトを実行する必要はありません。できるだけシンプルにする。なぜ機能ですか? 'on'メソッドは、第2引数のコールバック関数を受け入れると宣言されます。 –

+1

あなたは実際にあなたのためのリダイレクト機能を作る機能を作ることができます。 (redirectTo( 'index.php')) ' –

答えて

1

.on()関数の2番目のパラメータは、コールバック関数または匿名関数のいずれかでなければなりません。したがって、2番目のパラメータは関数呼び出しなので、clickイベントを待つことなく関数を直接呼び出します。

関連する問題