2017-11-20 14 views
1

jQueryでは3つの異なる関数定義を見ました。それらを使用する正しい方法は何ですか?jQueryは正しい関数定義ですか?

例1:

function example() { 
    // code here 
} 

例2:

jQuery('#Example').click(function() { 
    // code here 
}); 

例3:

var example = { 
    demo : function() { 
     // code here 
    } 
} 

なぜ私が選ぶべき?

+0

あなたの現在の状況によって異なります。あなたは何を達成したいですか? – edkeveked

+1

なぜ彼らはすべて同じことをしないのですか? –

答えて

1

各機能の定義は別々のものであり、異なる目的を果たしているため、ここでは「最良」はありません。また、2番目の例だけがjQueryと関係があることにも注意してください。

最初の例はバニラJSの関数定義ですが、これについては特別なことはありません。

2番目はjQuery clickイベントハンドラで、選択した要素でクリックイベントが発生したときに実行されるロジックを宣言するために使用されます。

第3の例は、オブジェクト内の関数定義で、OOPアプローチ(クラス/モデルを宣言する場合のように)を使用する場合や、ロジック内で値のコレクションを渡す場合に便利です。

1

例1と3はjQueryとは関係ありません。これらはバニラのjavascriptスニペットです。例2オン

、代わりにこの構文を使用することをお勧めします:

jQuery('#example_container').on('click', '#Example', function(event) { 
    // code here 
}); 

は、これは、ページが読み込まれた後、あなたがその要素を作成した場合でも、イベントはまだなることを意味している、あなたがイベント処理を委任することができます処理された。

+3

'代わりにこの構文を使うことをお勧めします.' ...動的に追加された要素を扱う場合にのみ推奨されます。静的イベントハンドラを使用することに本質的に間違っていることはありません。 –

+0

OPは初心者だと思われるので、予期せぬ問題に遭遇するのではなく、この構文を早い段階で使用することを習得することをお勧めします。あなたの将来の自己をより簡単にすることに何も問題はありません:) –

+1

それは意見です。あなたが委任していないときに短手の方法を読み書きする方がはるかに簡単です – charlietfl

0

あなたの最初の例:

function example() { 
    // code here 
} 

は、関数を定義する方法であり、その範囲に応じて使用可能になるだろう。

第二の例:

jQuery('#Example').click(function() { 
    // code here 
}); 

あなたが唯一の関数を定義していないが、あなたは三例ID「例」

を持つhtml要素のクリックイベントにこの機能を追加します:

var example = { 
    demo : function() { 
     // code here 
    } 
} 

オブジェクト内に関数を定義しています。この関数は、作成したオブジェクト "example"のメソッド "demo"になります。

関連する問題