私は4つのパラメータを取るイベント委任プラグインを書いています:
- context = 文字列セレクター
- 子要素 = 文字列セレクター
- イベント = 文字列
- fn = 呼び出す関数
親がDOMに存在する場合、プラグインはイベントを子要素に委任する必要があります...
コンテキスト要素が子要素と同じ場合に問題が発生します。デリゲートは、渡された子がコンテキストの子であると想定しているため、機能しなくなりました。
失敗する入力の例を次に示します。
- コンテキスト = "ul"
- 子要素 = "ul.active"
- イベント=「クリック」
$('ul').on('click', 'ul.active', fn())
「ul.active」が「ul」と同じになる場合があるため、できません。
私が考えることができる1つの解決策は次のとおりです。
var $context = $('ul');
$(document).on('click', 'ul.active', function(e){
var $target = $(e.target);
if($target.is($context) || $target.closest($context).length){
fn()
}
})
委任イベントをバインドする前に「子==コンテキスト」のチェックを行い、適切に状況にバインドする方が良いのではないでしょうか?