(function(window){
//创建事件函数
function myAddEvent(obj,ev,fn){
if(obj.attachEvent){
obj.attachEvent(‘on‘+ev,function(e){
if(fn.call(obj)==false){
//阻止冒泡
e.cancelBubble = true;
return false;
}
})
}else{
obj.addEventListener(ev,function(e){
if(fn.call(obj)==false){
e.stopPropagation();
e.preventDefault();
return false;
}
})
}
}
//class选择器调用函数
function getByClass(oParent,sClass){
var aEle=oParent.getElementsByTagName(‘*‘);//选择父元素的所有元素
var aResult=[];
var re=new RegExp(‘\\b‘+sClass+‘\\b‘,‘i‘);//正则边界
var i=0;
for(i=0;i<aEle.length;i++){
if(re.test(aEle[i].className)){
aResult.push(aEle[i]);
}
}
return aResult;
}
//定义函数
function blind_fn(arg){
this.elements = [];
switch (typeof arg){
case ‘function‘:
myAddEvent(window,‘load‘,arg);
break;
case ‘string‘:
switch (arg.charAt(0)){
case ‘#‘:
var self = document.getElementById(arg.substring(1));
this.elements.push(self);
case ‘.‘:
this.elements=getByClass(document,arg.substring(1));
break;
default://标签
this.elements=document.getElementsByTagName(arg);
}
}
}
var zhanglei = function(arg){
return new blind_fn(arg);
};
blind_fn.prototype = {
css:function(attr,value){
if(arguments.length == 2){
for(var i =0;i<this.elements.length;i++){
this.elements[i].style[attr] = value;
}
}else if(arguments.length==1){
for(var i = 0;i<this.elements.length;i++){
for(var k in attr){
this.elements[i].style[k]=attr[k];
}
}
}
return this;
},
click:function(fn){
for(var i = 0;i<this.elements.length;i++){
myAddEvent(this.elements[i],‘click‘,fn);
}
//链式操作
return this;
},
hide:function(){
for(var i = 0;i<this.elements.length;i++){
this.elements[i].style.display = ‘none‘;
}
return this;
},
show:function(){
for(var i = 0;i<this.elements.length;i++){
this.elements[i].style.display = ‘initial‘;
}
return this;
},
hover:function(fnover,fnout){
for(var i = 0;i<this.elements.length;i++){
myAddEvent(this.elements[i],‘mouseover‘,fnover);
myAddEvent(this.elements[i],‘mouseout‘,fnout);
}
return this;
},
attr:function(attr,value){
if(arguments.length==2){
for(var i = 0;i<this.elements.length;i++){
this.elements[i].setAttribute(attr,value);
}
}else if(arguments.length==1){
if(typeof attr==‘string‘){
return this.elements[0].getAttribute(attr);
}
}
return this;
},
addClass:function(str){
for(var i = 0;i<this.elements.length;i++){
if(this.elements[i].className==‘‘){
this.elements[i].className+=str;
}else{
this.elements[i].className+=‘ ‘+str;
}
}
return this;
},
removeClass:function(str){
for(var i = 0;i<this.elements.length;i++){
if(!str){
this.elements[i].className=‘‘;
}else{
var str_ = this.elements[i].className.split(‘ ‘);
for(var j = 0;j<str_.length;j++){
if(str_[j]==str){
str_.splice(j,1);
this.elements[i].className = str_.join(‘ ‘);
}
}
}
}
return this;
},
eq:function(n){
return new blind_fn(this.elements[n]);
},
index:function(){
var child = this.elements[0].parentNode.children;
for(var i=0;i<child.length;i++){
if(child[i]==this.elements[0]){
return i;
}
}
},
toggle:function(){
var _arguments=arguments;
function addToggle(obj){
var count=0;
myAddEvent(obj,‘click‘,function(){
_arguments[count++%_arguments.length].call(obj);
})
}
var i=0;
for(i=0;i<this.elements.length;i++){
addToggle(this.elements[i]);
}
}
};
window.$ = zhanglei;
})(window);
原文:http://www.cnblogs.com/leijuan/p/6536296.html