0

誰かがこのセクションの連鎖の論理を説明できますか

$("#name").unbind("focus").focus(function(){
    $("#name").unbind("blur").blur(function(){

次のコードの?にアクセスできませんHTMLレンダリングされた Web ページは次のとおりです。また、バインドを解除すると同時に、初めてイベント ハンドラーを宣言することは可能ですか?

$(document).ready(function(){

    $("#name").unbind("focus").focus(function(){
        $("#name").unbind("blur").blur(function(){
            var name = $("input[name='name']").val().toString();
            console.log(name);
            if(name === ""){
                $("#nameError").css("display", "block");
            }
            $("#name").focus(function(){
                $("#nameError").css("display", "none");
            });
        });
    });
    ...
});
4

3 に答える 3

2

これは使用されているため、以前にアタッチされたイベント ハンドラーはアタッチされません。

これは一般的に、外部ライブラリとプラグインを使用し、不要な機能を確実に無効にしたい場合に使用されます。

なぜこのように行われたのかを知る最も簡単な方法は、これを書いた人に尋ねることです.

于 2013-06-04T16:22:13.257 に答える
2

重複を恐れずにバインディングを複数回実行できるようにするためです

于 2013-06-04T16:22:29.430 に答える
1

このコードは壊れていると思います。

チェーンを持つ外側のハンドラーは、他のハンドラーが登録され.unbind('focus').focus()ていないことを確認するために存在します。また、追加の安全性のためにスローされ、その要素が最初にホバーされるまでハンドラーが登録されfocusないことも保証します。blur.unbind

ただし、そのハンドラー内では、要素がイベントを検出するたびに、内部.focusハンドラーがセーフティ ネットなしで再登録されます。.blur 最終的な結果は、その要素に登録されている多くの重複したハンドラーになります。

于 2013-06-04T16:28:33.347 に答える