0

有人可以解释本节链接的逻辑吗

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

下面的代码?我无法访问HTML但这是呈现的网页。此外,是否可以在解除绑定的同时首次声明事件处理程序?

$(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 回答