简单的专业问题:将函数再次绑定到一个事件 - 来自函数......有点递归

时间:2011-04-13 20:53:21

标签: javascript jquery

如果用户点击了某个目标,那么就不应该做任何事情了,但是点击事件应该再次绑定“一个” - 有点复发......这是如何做得很好的。

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

感谢您的任何建议!

2 个答案:

答案 0 :(得分:2)

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

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

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

如果.gallerystatus input未被点击,则会重新点击点击事件。

答案 1 :(得分:1)

如果条件没有发生,而不是重新绑定事件,最好解除事件的绑定:

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

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