ページの将来の DOM のある時点で div が表示されることはわかっています。また、その ID も知っています (SharePoint JavaScript によって生成されます) 。jQuery デリゲートを使用して、イベント ハンドラーをこの div にアタッチするそれはDOMに存在しますか?
また、これは、この特定のシナリオの .live() と比べてどうですか?
ページの将来の DOM のある時点で div が表示されることはわかっています。また、その ID も知っています (SharePoint JavaScript によって生成されます) 。jQuery デリゲートを使用して、イベント ハンドラーをこの div にアタッチするそれはDOMに存在しますか?
また、これは、この特定のシナリオの .live() と比べてどうですか?
を使用する必要があります.on()
。そして、決して使用しないでください.live()
。
3つの間のパフォーマンステストについては、http://jsperf.com/jquery-live-vs-delegate-vs-onを参照してください。
非推奨であるという事実に加えて.live()
、他の2つと比較して非常に遅いです。
基本的に、要素がすでに存在する.on()
か.delegate()
どうか、または要素がDOMに動的に追加されるかどうかに関係なく、コンテナー内の要素にイベントハンドラーを追加します。
はい、できますが、on()
最近のバージョンのjQueryでは、両方の方法が置き換えられています。
また、live()
常にイベントハンドラーを(上部の)ドキュメントdelegate()
に添付しますが、イベントを添付する場所を選択できるため、要素がどこにあるかを事前に知っていると、より効率的になります。
はい、これを行うことができますが、代わりに.onメソッドを使用できます。使用しないでください.live
。非推奨です。
$(elements).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(elements).on(events, selector, data, handler); // jQuery 1.7+