0

JQuery .liveを使用してカスタムイベントをリッスンしています。つまり、.click、.change、.keyup、またはネイティブイベントではなく、jquery.triggerを使用して作成したイベントです。アプリケーションには、.liveを使用してこのイベントをリッスンする場所がいくつかあります。イベントから1つのハンドラーを削除したいと思います。.unbind、.die、.undelegateなど、私が試した方法はどれも機能していないようです。jquery 1.6を使用しているため、.offを使用できません。これを達成するための最良の方法は何ですか?

これは基本的に私のコードがとる形式です。ハンドラーが既に存在する場合は、最初にunbindを呼び出してハンドラーを削除します。

OBJECT 1
{
    myNameSpace.MY_CUSTOM_EVENT_STRING = "my_event";

    $cachedFieldObject.trigger(myNameSpace.MY_CUSTOM_EVENT_STRING);
}

OBJECT 2
{
    function myfunctionName(var1) {myObject.myObjectsFunction()}

    $("#divID").find(".fieldClass").unbind(myNameSpace.MY_CUSTOM_EVENT_STRING, myfunctionName).live(myNameSpace.MY_CUSTOM_EVENT_STRING, myfunctionName);
}
4

1 に答える 1

0

live()は、委任されたイベントハンドラーをドキュメント要素にアタッチするため、ドキュメント要素からバインドを解除する必要があります。このフィドルは、特定の関数をライブからバインド解除する方法を示していますが、特定の選択された要素はバインド解除しません。
編集:
ドキュメントから

  • 連鎖方法はサポートされていません。たとえば、$( "a")。find( "。offsite、.external")。live(...); は無効であり、期待どおりに機能しません。

    カスタムイベントのバインドを解除することは可能ですが、バインドされているすべての要素に対して行う必要があります
    。このフィドルでは、すべての要素がバインド解除された場合にのみ、カスタムイベントがバインド解除されます。

  • 于 2012-05-15T02:59:58.523 に答える