jquery实现点击空白的事件

// 点击空白扩展
jQuery.fn.extend({
    clickOther: 
function () {
        
if  (window.click_other  ==   null ) {
            window.click_other 
=   new  Array();
        }
        window.click_other.push({ target: 
this , func: arguments[ 0 ] });
        $(document.body).click(
function (e) {
            
for  ( var  i  =   0 ; i  <  click_other.length; i ++ ) {
                
var  item  =  window.click_other[i];
                
var  target  =  item.target;
                
if  ( typeof  (target)  ==   " String " ) target  =  $(target)[ 0 ];

                
if  (e.target  ==  target) {
                    
continue ;
                }
                
var  index  =  $(e.target).parents().index(target);
                
if  (index  ==   - 1 ) {
                    item.func();
                }
            }
        });

    },
    unClickOther: 
function () {
        
if  (window.click_other  ==   null ) {
            
return ;
        }
        
for  ( var  i  =   0 ; i  <  window.click_other.length; i ++ ) {
            
var  item  =  window.click_other[i];
            
if  (item.target  ==   this ) {
                window.click_other.splice(i, 
1 );
            }
        }
    }
}); 

 

// 点击空白扩展
jQuery.fn.extend({
    clickOther: 
function () {
        
function  isInside(e, target) {
            
var  x  =  e.pageX;
            
var  y  =  e.pageY;
            
var  left  =  target.offset().left;
            
var  width  =  target.width();
            
var  top  =  target.offset().top;
            
var  height  =  target.height();

            
if  (x  >  left  &&  x  <  left  +  width  &&  y  >  top  &&  y  <  top  +  height)  return   true ;
            
return   false ;
        }
        
if  (window.click_other  ==   null ) {
            window.click_other 
=   new  Array();
        }
        
this .except  =   null ;
        
var  func  =  arguments[ 0 ];
        
if  ( typeof  (func)  ==   " string " ) {
            
this .except  =  document.getElementById(func);
            func 
=  arguments[ 1 ];
        }
        window.click_other.push({ target: 
this , func: func });
        $(document).click(
function (e) {
            
for  ( var  i  =   0 ; i  <  click_other.length; i ++ ) {
                
var  item  =  window.click_other[i];
                
var  target  =  $(item.target);
                
if  (isInside(e, target))  continue ;
                
if  (item.target.except) {
                    
var  except  =  $(item.target.except);
                    
if  (isInside(e, except))  continue ;
                }
                item.func();
            }
        });

    },
    unclickOther: 
function () {
        
if  (window.click_other  ==   null ) {
            
return ;
        }
        
for  ( var  i  =   0 ; i  <  window.click_other.length; i ++ ) {
            
var  item  =  window.click_other[i];
            
if  (item.target  ==   this ) {
                window.click_other.splice(i, 
1 );
                
break ;
            }
        }
    }
}); 


转载于:https://www.cnblogs.com/gateluck/archive/2010/11/04/1869092.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值