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

/**
 * 封装非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);
           }
   });
};

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页