x
首页 前端[Javascript] 屡试不爽的数组对象扩展方法【each】

屡试不爽的数组对象扩展方法【each】

发表于 2012-04-15 - 浏览:11709 评论: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}
});

文章评论。。。