首页
前端[Javascript] 屡试不爽的数组对象扩展方法【each】
屡试不爽的数组对象扩展方法【each】
发表于 2012-04-15 - 浏览:12597 评论:0 收藏 0
因为对数组的原型扩展了很多方法;所以数组没法使用for in来遍历。
有需要都使用for(var i=0,l=数组.length;i<l;i++){}这种方式,
或者直接使用 数组.each(方法); 来处理。从下面的使用频率,我只看到了each的便利性,哈哈
觉得[1,2,3].each();这些个方式用的简洁又大方。
当然,下面大部分方法都是针对标签元素的。
function Extend(tgt,src){for(var i in src){tgt[i]=src[i]}return tgt};
Extend(Array.prototype,{
append:function(o){this[0].appendChild(o);return this},
insertBefore:function(o){o.parentNode.insertBefore(this[0],o)},
css:function(a){this.each(function(){this.style.cssText=a});return this},
has:function(e){for(var i in this){if(this[i]===e)return true;}return false},
attr:function(a,b){this.each(function(){this.setAttribute(a,b)});return this},
hide:function(){this.each(function(){this.style.display='none'});return this},
show:function(){this.each(function(){this.style.display='block'});return this},
each:function(f){for(var i=0,l=this.length;i
remove:function(){this.each(function(){this.parentNode.removeChild(this)});return this},
merge:function(arr){for(var i=0,l=arr.length;i
html:function(a){if(typeof a==='undefined')return this[0].innerHTML;else{this[0].innerHTML=a;return this}},
click:function(fn){this.each(function(i){this.onclick=function(e){return fn.call(this,e||window.event,i)}});return this},
mousedown:function(fn){this.each(function(i){this.onmousedown=function(e){fn.call(this,e||window.event,i)}});return this},
siblings:function(){var e=this[0],n=e.parentNode.firstChild,r=[];for(;n;n=n.nextSibling)(n.nodeType===1&&n!==e)&&r.push(n);return r;},
hover:function(a,b){this.each(function(i){this.onmouseover=function(){a.call(this,i)};this.onmouseout=function(){b.call(this,i)}});return this},
hasClass:function(b){return $.hasClass(this[0],b)},
addClass:function(c){this.each(function(){if((' '+this.className+' ').indexOf(' '+c+' ')===-1)this.className=(this.className+' '+c).trim();});return this},
removeClass:function(c){this.each(function(){var a=(' '+this.className+' ').replace(' '+c+' ',' ');this.className=a.trim()});return this},
toggleClass:function(c){this.each(function(){var cn=this.className;if((' '+cn+' ').indexOf(' '+c+' ')===-1){[this].addClass(c);}else{[this].removeClass(c);}});return this},
indexOf:function(a){for(var i=this.length-1;i>-1;i--){if(this[i]==a)return i}return -1},
motion:function(options,times,callback){$motion.push(this[0],options,times,callback);return this}
});
Extend(Array.prototype,{
append:function(o){this[0].appendChild(o);return this},
insertBefore:function(o){o.parentNode.insertBefore(this[0],o)},
css:function(a){this.each(function(){this.style.cssText=a});return this},
has:function(e){for(var i in this){if(this[i]===e)return true;}return false},
attr:function(a,b){this.each(function(){this.setAttribute(a,b)});return this},
hide:function(){this.each(function(){this.style.display='none'});return this},
show:function(){this.each(function(){this.style.display='block'});return this},
each:function(f){for(var i=0,l=this.length;i
merge:function(arr){for(var i=0,l=arr.length;i
click:function(fn){this.each(function(i){this.onclick=function(e){return fn.call(this,e||window.event,i)}});return this},
mousedown:function(fn){this.each(function(i){this.onmousedown=function(e){fn.call(this,e||window.event,i)}});return this},
siblings:function(){var e=this[0],n=e.parentNode.firstChild,r=[];for(;n;n=n.nextSibling)(n.nodeType===1&&n!==e)&&r.push(n);return r;},
hover:function(a,b){this.each(function(i){this.onmouseover=function(){a.call(this,i)};this.onmouseout=function(){b.call(this,i)}});return this},
hasClass:function(b){return $.hasClass(this[0],b)},
addClass:function(c){this.each(function(){if((' '+this.className+' ').indexOf(' '+c+' ')===-1)this.className=(this.className+' '+c).trim();});return this},
removeClass:function(c){this.each(function(){var a=(' '+this.className+' ').replace(' '+c+' ',' ');this.className=a.trim()});return this},
toggleClass:function(c){this.each(function(){var cn=this.className;if((' '+cn+' ').indexOf(' '+c+' ')===-1){[this].addClass(c);}else{[this].removeClass(c);}});return this},
indexOf:function(a){for(var i=this.length-1;i>-1;i--){if(this[i]==a)return i}return -1},
motion:function(options,times,callback){$motion.push(this[0],options,times,callback);return this}
});