2016-12-13 9 views
0

私の問題を説明しようとします。私はmouseupイベントリスナーを使用しているので、クリックが実行され、ターゲットが希望の要素でないときはいつでもチェックすることができます。ここに来てjQuery - 要素 "document"のリスナーの登録/登録解除

$(document).off("mouseup"); 

:あなたが見ることができるように、イベントリスナーがなりグローバルドキュメント要素とリスナーをバインド解除する方法にバインドされている

function clickOutListener(element, callbackFunction){ 

    $(document).mouseup(function(e){ 

     if(!$(element).is(e.target) && $(element).has(e.target).length === 0) callbackFunction.call(this, null); 

    }); 
} 

:これは私が使用しているコードです。達成する必要があるものmouseupリスナーをアンバインドすると、このリスナーを使用する他の要素(ドロップダウンやその他の機能)に影響します。私は、リスナーを登録するたびに、前に定義されたリスナーをオーバーライドするのではなく、定義されたターゲット関数を追加することを推測しなければなりません。

同じリスナーの異なる定義済みのターゲット関数には、どうすればアクセスできますか?

$(document).mouseup(funct1); 
$(document).mouseup(funct2); 
$(document).mouseup(funct3); 

「funct2」の登録済みリスナーを登録解除するにはどうすればよいですか?

ありがとうございます。

+0

jQueryを使用しているのを見て、イベントの名前空間を確認してください。これは、https://api.jquery.com/event.namespace/に役立ちます。 – Nope

答えて

2

.on()構文を使用すると、イベントの名前空間を割り当てることができます。

$(document).on('mouseup.myNamespace', function(e){ ... } 

これにより、名前空間でイベントを削除し、他のイベントをそのまま残すことができます。

$(document).off('mouseup.myNamespace'); 
関連する問題