扩展Jquery的resize方法(原生的resize只针对window,因项目需要扩展了此方法,目前只在DIV上使用过,后续如果修改代码会对此代码进行更新)

1 篇文章 0 订阅
1 篇文章 0 订阅

/**
 * 封装非Window对象的resize方法
 * callback:回调函数(长宽发生变化时触发)
 */
$.fn.divResize=function(callback, setting){
   var cycleTime = 250; // 定义监控大小变化的时间
   
   if(setting&&setting.cycleTime){
      cycleTime = setting.cycleTime;
   }
   
   if(callback==undefined||callback==null){
      return;
   }
   if(!(typeof callback == "function")){
      return;
   }
   
   $(this).each(function(){
      var resizeDom = this;
      resizeDom.data = {};
      resizeDom.data.width = $(resizeDom).css("width"); // 存放当前宽度
      resizeDom.data.height = $(resizeDom).css("height"); // 存放当前高度
      resizeDom.callback = callback;
      
      // 定义监控函数
      var resizeMonitor = function(){
         
         // 判断高度和宽度是否发生变化
         if($(resizeDom).css("width")!=resizeDom.data.width||$(resizeDom).css("height")!=resizeDom.data.height){
            resizeDom.data.width = $(resizeDom).css("width");
            resizeDom.data.height = $(resizeDom).css("height");
            resizeDom.callback();
         }
         var callFunc = arguments.callee; // 获取本身函数
         setTimeout(function(){callFunc();}, cycleTime);
      };
      resizeMonitor();
   });
};
/**
 * 扩展resize方法(可支持window和非window对象)
 * callback:回调函数(长宽发生变化时触发)
 */
   $.fn.resizeOld = $.fn.resize;
$.fn.resize=function(callback, setting){
   $(this).each(function(){
           var resizeDom = this;

       // 确定绑定的对象是否是window
           if (this == window) {
               $(window).resizeOld(function () {
                   callback();
               });
           } else {
               resizeDom.callback = callback;
               $(this).divResize(callback, setting);
           }
   });
};

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值