仿jquery框架设计vquery

<html>
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="Zend Studio" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--<script type="text/javascript" src="jquery-1.4.2.min.js"></script>-->
<script type="text/javascript" src="v.js"></script>
<title></title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99">
<span id="content" ></span>
<div style='width:100px;height:100px;background:red;position:absolute'></div>
<div id='div1'>aaaa</div>
<div class='div1'>aaaa</div>
<div >aaaa</div>
<div >aaaa</div>
<script type="text/javascript">
/**
$(document).ready(function(){
	$.extend({
	   aa:function(){
	      alert(12)
	   },
	   leftTrim:function(str){
	      return str.replace(/^\s+/,'');
	   }
	})
	$.fn.extend({
	   drag:function(){
	     //this:$('#div1')
		 var disX=0;
		 var disY=0;
		 var This=this;
		 this.mousedown(function(ev){
		
		    disX=ev.pageX-$(this).offset().left;
			disY=ev.pageY-$(this).offset().top; 
			 $(document).mousemove(function(ev){
		       This.css('left',ev.pageX-disX);
			   This.css('top',ev.pageY-disY);
			 });
			 $(document).mouseup(function(){
				$(this).off();
			});
			return  false;
		 });
		
		
		 
	   }
	});
	$.aa();
	//alert('bb'+$.leftTrim('        [aa]            '))
	//$('div').drag();
	
})
$(function(){
	//var a='string';
	//alert( typeof a );
	//var b=$.type(a);
	alert(123)
})
*/
$(function(){alert(123)});
$(function(){alert(456)});
</script>
</body>
</html>


function bindEvent(obj,events,fn){
   if(obj.addEventListener)
      obj.addEventListener(events,function(ev){
	     if(fn() == false){
		    ev.preventDefault;
			ev.cancelBubble = true;
		 }
	  },false);
   else
     obj.attachEvent('on'+events,function(ev){
	     if(fn() == false){		   
			window.event.cancelBubble = true;
			return false;
		 }
	  });   
}
function getByClass(oParent,sClass){
    var arr=[];
	var elems=oParent.getElementsByTagName('*');
	for(var i=0;i<elems.length;i++)
	{
	   if(elems[i].className == SClass)
	       arr.push(elems[i])
	}
	return arr;
}
function toArray(ele){
   var arr=[];
   for(var i=0;i<ele.length;i++)
	{
	       arr.push(elem[i]);
	}
   return arr;
}
function getStyle(obj,attr){
  if(obj.currentStyle)
   return  obj.currentStyle[attr];
  else
    return getComputedStyle(obj,false)[attr];
}
function vQuery(vArg){
	this.ele=[];
    switch(typeof vArg){
	    case 'function':
		   bindEvent(window,'load',vArg);
		break;  
		case 'string':
		  switch(vArg.charAt(0)){
		    case '#':
			    this.ele.push( document.getElementById(vArg.substring(1)) );
			 break;
			case '.':
			    this.ele = getByClass(document , vArg.substring(1));
			 break;
            default:
			    document.getElementsByTagName(vArg);
			 break;			 
		  }
		 break;
         case 'object':
		        if(vArg.constructor == 'Array')
				   this.ele = vArg;
				 else  
            	   this.ele.push(vArg);
         break;				
	}
}
vQuery.prototype.css = function(attr,val){
  if(arguments.length == 2){
     for(var i=0;i<this.ele.length;i++){
			 this.ele[i].style[attr]=val;
	   }
  }
  if(arguments.length == 1){
     if(typeof attr=='object'){
		for(var i in attr){
		  for(var j=0;i<this.ele.length;j++){
			 this.ele[i].style[j]=attr[j];
			}
		}
	}else
      	return getStyle( this.ele[0],attr);
  }
};

vQuery.prototype.attr = function(attr,val){
  if(arguments.length == 2){
     for(var i=0;i<this.ele.length;i++){
			 this.ele[i].setAttribute(attr,val);
	   }
  }
  if(arguments.length == 1){
     return this.ele[i].getAttribute(attr);
  }
};
vQuery.prototype.eq = function(num){
  return $( this.ele[num]);
}
vQuery.prototype.find = function(sel){
 var arr=[];
  if(sel.charAt(0)=='.'){
     for(var i=0;i<this.ele.length;i++){
			arr.concat( getByClass(this.ele[i],sel.substring(1) ));
	   }
  }else{
    for(var i=0;i<this.ele.length;i++){
		arr =	arr.concat( toArray(this.ele[i].getElementsByTagName(sel) ));
	   }

  }
  return $(arr);
}
vQuery.prototype.index = function(num){
  var eles= this.ele[0].parentNode.children;
  for(var i=0;i<this.eles.length;i++){
             if(this.ele[0]==eles[i])
			   return i;
	   }
  return $( this.ele[num]);
}
vQuery.prototype.html = function(str){
   if(str){
	   for(var i=0;i<this.ele.length;i++){
			 this.ele[i].innerHTML=str;
	   }
   }else{
      return this.ele[0].innerHTML;
   }
};
vQuery.prototype.click = function(fn){
   for(var i=0;i<this.ele.length;i++){
		bindEvent(this.ele[i],'click',fn);	
   }
   //this.on('click',fn);
};
vQuery.prototype.mouseover = function(fn){
   for(var i=0;i<this.ele.length;i++){
		bindEvent(this.ele[i],'mouseover',fn);	
   }
};
vQuery.prototype.on = function(event,fn){
   for(var i=0;i<this.ele.length;i++){
		bindEvent(this.ele[i],event,fn);	
   }
};
vQuery.prototype.hide = function(){
   for(var i=0;i<this.ele.length;i++){
		this.ele[i].style.display='none';	
   }
};
vQuery.prototype.show = function(){
   for(var i=0;i<this.ele.length;i++){
		this.ele[i].style.display='block';	
   }
};
vQuery.prototype.hover = function(overfn,outfn){
   this.on('mouseover',overfn);
   this.on('mouseout',outfn);
};
function $(vArg){
   return new vQuery(vArg);
}
$.trim=function(str){
  return str.replace(/^\s+|\s+$/g,'');
}
$.extend=function(json){
	for(var sttr in json)
     $[attr] = json[attr];
}
$.fn = {};
$.fn.extend=function(json){
	for(var sttr in json)
     vQuery.prototype[attr] = json[attr];
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值