链接bind()和unbind()事件处理程序

时间:2013-06-04 16:19:36

标签: jquery

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

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

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

$(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");
            });
        });
    });
    ...
});

3 个答案:

答案 0 :(得分:2)

正在使用它,因此任何以前的附加事件处理程序都将被取消附加。

这通常与您使用外部库和插件一起使用,并且您希望确保禁用不需要的功能。

最简单的方法就是知道为什么这样做是为了问这个写这个的人。

答案 1 :(得分:2)

这样可以多次运行绑定而不必担心重复

答案 2 :(得分:1)

我认为此代码已被破坏。

带有.unbind('focus').focus()链的外部处理程序可以确保没有注册其他focus处理程序。它还确保在第一次元素悬停之前,甚至没有注册blur处理程序,并且为了额外的安全而抛出.unbind

然而,在该处理程序内,每次元素看到.focus事件时,内部.blur处理程序将重新注册而不安全网。< / em>最终结果将是在该元素上注册的许多重复处理程序。