Javascript 简单的专业问题:再次将函数绑定到事件-从函数。。。一种补偿

Javascript 简单的专业问题:再次将函数绑定到事件-从函数。。。一种补偿,javascript,jquery,Javascript,Jquery,如果用户点击了某个目标,那么什么也不应该做,但是点击事件应该再次绑定为“一”—这是一种补偿。。。这是如何很好地完成的 $(document).one('click',function(ev){ if(!$(ev.target) == $('.gallerystatus input')){ $('.gallerystatus input').trigger('focusout'); }

如果用户点击了某个目标,那么什么也不应该做,但是点击事件应该再次绑定为“一”—这是一种补偿。。。这是如何很好地完成的

        $(document).one('click',function(ev){
            if(!$(ev.target) == $('.gallerystatus input')){
                $('.gallerystatus input').trigger('focusout');
            }
        });

谢谢你的建议

我想这就是你想要的:

    var clickGalleryStatus = function(ev){
        if(!$(ev.target) == $('.gallerystatus input')){
            $('.gallerystatus input').trigger('focusout');
        } else {
            $(document).one('click', clickGalleryStatus);
        }
    };

    $(document).one('click', clickGalleryStatus);

如果
.gallerystatus输入
不是单击的内容,则它将重新绑定单击事件。

我认为这就是您所要求的:

    var clickGalleryStatus = function(ev){
        if(!$(ev.target) == $('.gallerystatus input')){
            $('.gallerystatus input').trigger('focusout');
        } else {
            $(document).one('click', clickGalleryStatus);
        }
    };

    $(document).one('click', clickGalleryStatus);

如果
.gallerystatus输入
不是单击的内容,则它将重新绑定单击事件。

如果条件未发生,则最好取消绑定事件,如果条件发生:

var handler = function(ev){
    if(!$(ev.target) == $('.gallerystatus input')){
        $('.gallerystatus input').trigger('focusout');
        $(document).unbind('click', handler);
    }
};

$(document).bind('click', handler);

如果某个条件未发生,则与其重新绑定该事件,不如在该条件发生时解除绑定该事件:

var handler = function(ev){
    if(!$(ev.target) == $('.gallerystatus input')){
        $('.gallerystatus input').trigger('focusout');
        $(document).unbind('click', handler);
    }
};

$(document).bind('click', handler);