jQuery: Close DIV by clicking anywhere apart from the DIV itself?

后端 未结 3 1905

I have a div that slides down when a button is clicked, and I would like to slide up the div when a user:

  1. Clicks anwhere except within the DIV itself
3条回答
  •  再見小時候
    2020-12-16 14:33

    You could bind a click event to the document and check if the click event happend within that div or any children. If not, close it.

    Plugin time!

    (function($){
        $.fn.outside = function(ename, cb){
            return this.each(function(){
                var $this = $(this),
                    self = this;
    
                $(document).bind(ename, function tempo(e){
                    if(e.target !== self && !$.contains(self, e.target)){
                        cb.apply(self, [e]);
                        if(!self.parentNode) $(document.body).unbind(ename, tempo);
                    }
                });
            });
        };
    }(jQuery));
    

    usage:

    $('.panel-tab').outside('click', function() {
        $('#panel').stop(true, true).slideUp('slow');
    });
    

提交回复
热议问题