2011-08-03 13 views
1

質問タイトルは少しわかりにくいので説明します。jQuery Javascript関数のイベントハンドラ

私には最近説明がありましたが、私のプロジェクトではjQueryを使用しています。しかし、私の関数はそのままで、いくつかのjQueryを含んでいれば再利用できることに注意しています。

だから私(HTMLでのJS側ではない)、初めてのイベントリスナーの世界を探検してい

私が気付い標準のjQueryのonclickイベント

referenceToElement.onclick = function() { alert('here'); }; 

ことの一つは、関数ということです実際には名前はありません。

referenceToElement.onclick = myOldJavascriptFunction(); 

function myOldJavascriptFunction() 
{ 
    //blahblahblah 
} 

これは良い方法ですか、それを行うには良い方法がありますか?これが私の考えで今働くだろうか?

答えて

4

検索によって、私はあなたにヘッドアップを与えます。

referenceToElement.onclick = function() { alert('here'); }; 

は必ずノーjQueryの標準のもののためのものであること。純粋なJavascriptで、DOM参照(この場合は無名関数)にプロパティを追加します。しかし、基本的には基本的に2つの質問をしました。

  • 匿名機能に名前を付けることはできますか? => YES
  • 他のどこかで定義されている関数を参照できますか?=> YES

はそれに名前を与えるために、私たちは関数を参照するには、この

referenceToElement.onclick = function myFunctionName() { alert('here'); }; 

ようという名前の関数式を作成することができ、我々はそれの名前

referenceToElement.onclick = myOldJavascriptFunction; 
に渡します

最後に、同じイベントリスナーを追加するためのjQueryの構文は、次のようになります。

$(referenceToElement).click(myOldJavascriptFunction); 
+0

見ました。イベントリスナーの例の多くは、HTML自体の中でonclickとして定義されているか、関数をコードの2番目のスニペットとして手動で定義しています。私がトリッピングしていたところは、実際にはかっこでした。あなたがまだdownvoteの価値があると思うなら、次に進んでください。説明のために – OVERTONE

+0

+1。また、*名前付き関数式*はIE8以下で想定されているように動作しません。 –

+0

@OVERTUNE:私はちょうど簡単な検索、犯罪ではなかった小さなeffordで言っていた! – jAndy

1

はい、あなたは非常にほぼ正しかった:

referenceToElement.onclick = myOldJavascriptFunction; 

は、括弧の不足に注意してください。これにより、関数への参照がonclickイベントに渡されます。また、これはjQueryではなく古いJavaScriptであることにも注意してください。

1

最初の例では、jQueryとは何の関係もない、普通の、普通のjavascriptがあります。あなたはjQueryのを使用していた場合、行は次のようになります。

$(referenceToElement).click(function() { ... }); 

しかし、どのような場合には、あなたの質問は匿名関数についてですように、それはそうです。あなたは、変数名に機能を割り当てる、または関数の宣言を使用して、まだ名前によってその機能を参照することができます:あなたは簡単にこれらすべての質問に答える可能性があるので質問は、実際にdownvote価値がある場合であっても

function myFunction() { ... } 

$(referenceToElement).click(myFunction); 
関連する問題