您的位置:首页 > 其它

同时添加多个窗口改变大小事件

2014-04-04 00:00 239 查看
摘要: JQuery自带的resize函数一次只能传入一个参数,感觉不是很好用。

使用方法:

_resize.add(fn,number,true)     //添加一个函数,并立即执行;
_resize.add([fn,fn,fn],number,true)     //添加多个函数,并立即执行。
_resize.close()     //移除窗口改变大小事件
_resize.open()     //添加窗口改变大小事件,并立即执行


//判断数组是否包含值

Array.prototype.contains = function(v){
if(this.length == 0) return false;
for(var i = 0; i < this.length; i++){
if(this[i] !== v) return false;
}
return true;
}


//窗口改变大小事件

//需要Array.prototype.contains的支持

//在添加窗口改变大小事件的同时,如果实参t为true,则立即执行该函数

//否则只在窗口变大大小时才执行函数

//如果该函数被添加过,则不会再次添加,即使实参t为true,也不执行该函数

//如果添加时,第一个为数组,执行顺序按照数组序列执行

//实参n为第几执行

var _resize = {
cache : [],
add : function(f,n,t){
var a = this.cache;
if(f instanceof Array){
for (var i = 0; i < f.length; i++) {
if(!(f[i] instanceof Function)){
console.error("_resize.add(): 这里的参数类型应该为function");
continue;
}
if (!a.contains(f[i])) {
if(t) f[i]();
this.cache[n++] = f[i];
}
}
}else{
if(!(f instanceof Function)){
console.error("_resize.add(): 这里的参数类型应该为function");
return;
}
if(!a.contains(f)){
if(t) f();
this.cache
= f;
}
}
},
colse : function(){
window.onresize = null;
},
open : function(){
window.onresize = function(){
for(var i = 0; i < _resize.cache.length; i++){
if(i in _resize.cache){
_resize.cache[i]();
}
}
};
window.onresize();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息