1

ページをコーディングしていて、理解できないものに出くわしました。

目標は、ボタンが押されたときにコンテキスト メニューを無効にし、後で再度有効にすることでした。

最初の例はコンテキストメニューを無効にしますが、後で再度有効にすることはできません。

注: 'off' コマンドは明らかに 'on' コマンドの直後には実行されません。読者の便宜のために、関連するコードを取り出しただけです。

誰かがなぜこれがうまくいかないのか説明してもらえますか:

$(document).on("contextmenu",function(e){return false;});
$(document).off("contextmenu",function(e){return false;});

それでもこれは行います:

function returnFalse(e) {        
    return false;
}
$(document).on("contextmenu",returnFalse);
$(document).off("contextmenu",returnFalse);
4

2 に答える 2

1

うまくいかないのは、「コンテキストメニューで、この匿名関数を実行してください」と言っているからです。次に、「コンテキストメニューから離れて、この新しい匿名機能を実行しないでください」と言っています

無名関数を作成するときはいつでも、それは基本的に新しい関数であるため、後で参照することはできません。

後で使用するために関数を保存する必要があるため、jQuery は実際に削除する関数を認識します。

于 2013-09-13T02:21:38.937 に答える
1

off要素にハンドラーとして実際にアタッチされている関数を削除するためです。最初の例では、ハンドラーとしてアタッチされたことのないファクシミリ匿名関数を削除しようとしています。

于 2013-09-13T02:21:45.717 に答える