2

難しい質問があります。

events = $._data( element[0], 'events'); 

$.each(events, function(_event_name, _event_handler){ 
    var _handlers=[]; 
    for(var i= 0 ;i < _event_handler.length;i ++) 
            _handlers.push(_event_handler[i].handler);
    event_handler.push(_handlers); 
    event_name.push(_event_name); 
}); 

element.off(); 

要素に割り当てられているすべてのものevent nameとそのhandler割り当てを正常に読み取るための上記のコードがあります。

次に、イベントをオフにする前にevent_name、それぞれを保存します。event_handler

ただし、このメソッドは、イベントが要素に直接割り当てられている場合にのみ機能します。

イベントが委任されて割り当てられた場合、それを行うためのコードをどのように開発できますか?

$(document).on('click', '#id', handler);

上記のコードには、イベント名clickとそのハンドラーのみが表示handlerされ、デリゲートに割り当てられた要素の名前やセレクターは表示されません#id

デリゲートがオフにできる、または親のすべてのイベントがオフになる、デリゲートに割り当てられた要素の名前を読み取る方法を知りたいです。

アドバイスありがとうございます。

4

1 に答える 1

3

は、以下に示すようselectorに、下のクリックイベントの配列内のオブジェクトに格納されselectorます。

要素に直接バインドされたイベントselectorを見ると、フィールドは空のようです。click

どういうわけか、コードにチェックを組み込むことができると思います。念のために言っておきますが、このselectorプロパティは、過去に自分自身に質問したときに、時々奇妙な値が含まれていることに気付いたため、内部使用のみを目的としているようです。

そのために、それはあなたのために働くかもしれませんが、それがどれほど信頼できるか、あるいはそれがjQueryの将来のバージョンで使用されるかどうかさえわかりません。

ただし、デリゲートイベントにのみ使用する場合は、有用な値が含まれていることに気付くかもしれませんが、注意してください。

ここに画像の説明を入力してください

于 2013-02-09T23:28:45.580 に答える