2009-09-02 11 views
16

jQuery 1.3で新しいライブイベントが大好きです。私が持っている質問は、このイベントのパフォーマンスです。クリック/バインド( 'クリック')でライブを使用する利点を知っていますが、クリック/バインド( 'クリック')で使用するとパフォーマンスが低下しますか?jQueryの.live( 'click'、fn)と.click(fn)のパフォーマンスの差

そうでない場合、クリックまたはバインド(「クリック」)を使用する理由は何ですか?

+0

DUP:http://stackoverflow.com/questions/748076/using-live-benefits-similar-to-bind私はこの1つは、パフォーマンスの違いにのみ関連していないのように、彼らは別の質問だと思います –

+0

一般的です。 – MacAnthony

+0

@MacAnthony:その質問への受け入れ答えを読んで、それは 'live'と' bind'の性能特性掘り下げ。だから私はこれをDupされた:それはすでに答えられている。 –

答えて

12

ない場合は、なぜあなたは今までに またはバインド(「クリック」)をクリックし使用しますか? $.live()は、いくつかの重大な欠点を持っているので

  • ライブイベントは、伝統的な方法で、バブルと が はのstopPropagation を使用して停止することはできませんしません(これは、jQueryの1.4.4で変更しました)または stopImmediatePropagation。たとえば、 は、2つのクリックイベントのケースをとります。 は「li」にバインドされ、もう1つは「li a」です。 内側のクリックが発生した場合は、 アンカーの両方のイベントがトリガーされます。 これは、 $( "li")。bind( "click"、fn);あなたが実際に言っている バインドされている「 - やLI要素の内部 - クリックイベントがLI要素で発生するたびに。この クリックイベントをトリガー」ライブイベントの処理をさらに停止するには、 fnは falseを返す必要があります。
  • 現在、ライブイベントはセレクタに対して使用されている場合にのみ機能します。 $( "a"、someElement).live(...)と の例では、これはうまくいきます:$( "li a")live(...) $( "a")。parent()。live(...)。
+0

また、特定のイベントが.live() – MacAnthony

+6

ライブは、()これらは非常に重要ないないようです1.4.4 – Chris

+0

以来stopProgationをサポートによって捕獲することはできません... – Kevin

2

thisを参照してください。

ライブの代わりにクリックまたはバインドを使用する理由は、余分な機能は必要ないからです。