2

ページの将来の DOM のある時点で div が表示されることはわかっています。また、その ID も知っています (SharePoint JavaScript によって生成されます) 。jQuery デリゲートを使用して、イベント ハンドラーをこの div にアタッチするそれはDOMに存在しますか?

また、これは、この特定のシナリオの .live() と比べてどうですか?

4

4 に答える 4

3

短い答え:はい

長い答え: jQuery 1.7+ の時点で.on()、あなたが言及した 2 つよりも優先されますが、それらは非推奨です。これは の例.on()です:

    $('#parent').on("click", "span.children", function() {
        if ( confirm("Are you sure?") ) {
            console.log(this);
        }
    }); 
于 2012-08-22T09:17:59.170 に答える
1

を使用する必要があります.on()。そして、決して使用しないでください.live()

3つの間のパフォーマンステストについては、http://jsperf.com/jquery-live-vs-delegate-vs-onを参照してください。

非推奨であるという事実に加えて.live()、他の2つと比較して非常に遅いです。

基本的に、要素がすでに存在する.on().delegate()どうか、または要素がDOMに動的に追加されるかどうかに関係なく、コンテナー内の要素にイベントハンドラーを追加します。

于 2012-08-22T09:17:03.617 に答える
1

はい、できますが、on()最近のバージョンのjQueryでは、両方の方法が置き換えられています。

また、live()常にイベントハンドラーを(上部の)ドキュメントdelegate()に添付しますが、イベントを添付する場所を選択できるため、要素がどこにあるかを事前に知っていると、より効率的になります。

于 2012-08-22T09:17:16.500 に答える
1

はい、これを行うことができますが、代わりに.onメソッドを使用できます。使用しないでください.live。非推奨です。

$(elements).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(elements).on(events, selector, data, handler);        // jQuery 1.7+
于 2012-08-22T09:15:19.430 に答える