// JavaScript Document

function myAddEvent(obj,sEv,fn){
if(obj.attachEvent){
obj.attachEvent('on'+sEv,function(){
fn.call(obj);
});
}else{
obj.addEventListener(sEv,fn,false);
}
}
/*getClassName 完整版*/
function getClassName(oParent,sClass){
var aEle = oParent.getElementsByTagName('*');
var iResult = [];
/*一般如果需要传递参数就用new RegExp,不用//,//会把里面的所有内容都当场字符串*/
var re = new RegExp('\\b'+sClass+'\\b');
for(var i=0;i<aEle.length;i++){
if(re.test(aEle[i].className)){
iResult.push(aEle[i]);
}
}
return iResult;
}
function getStyle(obj,attr){ return obj.currentStyle ? obj.currentStyle[attr]:getComputedStyle(obj)[attr];
} function Vquery(vArg){
this.elements = [];
switch(typeof vArg){
case 'function':
myAddEvent(window,'load',vArg);
break;
case 'string':
switch(vArg.charAt(0)){
case '#'://id
var obj = document.getElementById(vArg.substring(1));
this.elements.push(obj);
break;
case '.'://class
this.elements = getClassName(document,vArg.substring(1));
break;
default ://tagname
this.elements = document.getElementsByTagName(vArg);
break;
}
break; case 'object': //对象
this.elements.push(vArg);
}
} function $(vArg){
return new Vquery(vArg);
} Vquery.prototype.click = function(fn){
for(var i=0;i<this.elements.length;i++){
myAddEvent(this.elements[i],'click',fn);
}
}; Vquery.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{
return getStyle(this.elements[0],attr);
}
}; Vquery.prototype.attr=function (attr, value)
{
if(arguments.length==2)
{
var i=0; for(i=0;i<this.elements.length;i++)
{
this.elements[i][attr]=value;
}
}
else
{
return this.elements[0][attr];
}
}; Vquery.prototype.show = function(){ for(var i=0;i<this.elements.length;i++){
this.elements[i].style.display = 'block';
}
}; Vquery.prototype.hide = function(){ for(var i=0;i<this.elements.length;i++){
this.elements[i].style.display = 'none';
}
}; Vquery.prototype.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);
}
}; Vquery.prototype.toggle = function(){ var _arguments = arguments;
for(var i=0;i<this.elements.length;i++){
addToggle(this.elements[i]);
} function addToggle(obj){
var count = 0; //几个不同的函数就会有几个不同的变量
myAddEvent(obj,'click',function(){
_arguments[count%_arguments.length].call(obj);
count++;
});
} }; Vquery.prototype.eq=function (n)
{
return $(this.elements[n]); //注意这个传递的参数和返回$
}; function appendArr(arr1, arr2)
{
var i=0; for(i=0;i<arr2.length;i++)
{
arr1.push(arr2[i]);
}
} Vquery.prototype.find=function (str)
{
var i=0;
var aResult=[]; for(i=0;i<this.elements.length;i++)
{
switch(str.charAt(0))
{
case '.': //class
var aEle=getByClass(this.elements[i], str.substring(1)); aResult=aResult.concat(aEle);
break;
default: //标签
var aEle=this.elements[i].getElementsByTagName(str); //aResult=aResult.concat(aEle); //注意这里是集合,集合没有push方法,数组有
appendArr(aResult, aEle);
}
} var newVquery=$(); newVquery.elements=aResult; return newVquery; //对元素的操作实际上就是元素的内容
}; function getIndex(obj)
{
var aBrother=obj.parentNode.children;
var i=0; for(i=0;i<aBrother.length;i++)
{
if(aBrother[i]==obj)
{
return i;
}
}
} VQuery.prototype.index=function ()
{
return getIndex(this.elements[0]);
};

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
div{width:100px;height:100px;background:red;}
</style>
<script src='vQuery.js'></script>
<script>
/*
test function
new Vquery(function(){
alert('a');
});
new Vquery(function(){
alert('b');
}); $(function(){
alert('a');
});
*/
/*
test click
$(function(){
$('#box1').click(function(){
alert('a');
});
});
*/ /*
test css
$(function(){
$('#box1').css('width');
});
*/
/*
test show hide
$(function(){
$('#btn1').click(function(){
$('#box1').show();
});
$('#btn2').click(function(){
$('#box1').hide();
});
});
*/
/*
test hover
$(function(){
$('#box1').hover(function(){
document.title = 'into';
},function(){
document.title = 'out';
});
});
*/ $(function(){
$('#btn3').toggle(function(){
$('#box2').hide();
},function(){
$('#box2').show();
});
}); </script>
</head> <body>
<input id="btn1" type="button" value="显示"/>
<input id="btn2" type="button" value="隐藏"/>
<div id="box1"></div>
<input id="btn3" type="button" value="显示隐藏"/>
<div id="box2"></div>
</body>
</html>

vquery 一些应用的更多相关文章

  1. VQuery高级特性

    VQuery高级特性 css方法 同时设置多个--for in 链式操作 链式操作 函数,链式操作 css 方法链式操作 json的使用 阻止冒泡,默认事件 VQuery插件 插件机制 可以扩展库的功 ...

  2. VQuery选择器

    VQUery elements属性,储存选中的元素 参数 typeof的作用 字符串 class  ID tagName 函数 事件绑定 对象 直接插入 $函数 绑定事件 click方法 显示隐藏,- ...

  3. Vquery PHP 简单爬虫类

    http://www.thinkphp.cn/topic/36693.html 在使用php进行网页抓取的时候你有没有感觉到用起来比较麻烦呢?目前我还没有发现php有这样针对网页抓取的类,每次用到这个 ...

  4. js Vquery

    // JavaScript Document function myAddEvent(obj,sEv,fn){ alert('fn:'+fn); if(obj.attachEvent){ obj.at ...

  5. 封装自己的JS库

    一.基础知识 1.点击计数 第一种: var aBtn=document.getElementsByTagName('input'); var i=0; for(i=0;i<aBtn.lengt ...

  6. mongodb分组,的两种方式,先记一下

    using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.Builders; using NationalUnion.AdGalle ...

  7. 常见的js函数

    改变元素的样式   var  changeStyle = function(elem,name,value){      elem.style[name] = value; }   空位补零   fu ...

  8. CF #345 Div1 D Zip-line

    题目链接:http://codeforces.com/contest/650/problem/D 大意是给一个数组,若干询问,每一次把一个数字改为另一个数字,问当前数组最长上升子序列,询问之间是独立的 ...

  9. LOJ2269 [SDOI2017] 切树游戏 【FWT】【动态DP】【树链剖分】【线段树】

    题目分析: 好题.本来是一道好的非套路题,但是不凑巧的是当年有一位国家集训队员正好介绍了这个算法. 首先考虑静态的情况.这个的DP方程非常容易写出来. 接着可以注意到对于异或结果的计数可以看成一个FW ...

随机推荐

  1. HDU 5978 To begin or not to begin

    题目:HDU 5978 To begin or not to begin 思路: 题目意思是说:给出n个黑球,一个红球,拿到红球的人胜利.如果先手有优势的输出 1 ,没有优势的输出 2 ,机会均等则输 ...

  2. labview线程相关

    两个结论.     1. 在 LabVIEW 上编写多线程程序非常方便,我们应该充分利用这个优势.一般情况下,编写程序时应当遵循这样的原则:可以同时运行的模块就并排摆放,千万不要用连线,顺序框等方式强 ...

  3. DIP|PCN|CoevDB|PID|Y2H|RosettaDock Serve|元基因组学|微生物多样性

    生命组学: 比较真核生物有关呼吸链的gene是比较核外编码基因,因为与呼吸有关的功能在线粒体上,线粒体位于核外.想要查看两种基因是否具有相互作用,可以对不同物种的编码ATP6 和ATP8的直系同源基因 ...

  4. wPF,解决UI界面实时更新的问题

    private void button1_Click(object sender, RoutedEventArgs e) { Thread thread = new Thread(new Thread ...

  5. js mvvm:闲来无事,实现一个只具最基本数据双向绑定的mvvm

    近期项目内用knockoutjs. 想模拟实现数据双向绑定的基本功能. 只具有最基本的功能,且很多细节未曾考虑,也未优化精简. 能想到的缺少的模块 1事件监听,自定义访问器事件 2模版 3父子级 编码 ...

  6. 编程原理—如何用javascript代码解决一些问题

    关于编程,我最喜欢的就是解决问题.我不相信有谁天生具有解决问题的能力.这是一种通过反复锻炼而建立并维持的能力.像任何练习一样,有一套指导方针可以帮助你更有效地提高解决问题的能力.我将介绍5个最重要的软 ...

  7. spring参数拼装

    -- 知道轮子是怎么造的 -- 自己试着造一造轮子 ,这样才可以更好地利用轮子,轮子的缺陷和优点才能明确. spring参数拼装,需要用到set函数,参考文档: http://coderec.cn/2 ...

  8. git还原历史某一版本

    返回上一版本 git reset --hard HEAD^ 常用的命令git refloggit reset --hard "填写版本号" 黄色的就是版本号 其他查看以前版本的命令 ...

  9. 简单的员工管理系统(Mysql+jdbc+Servlet+JSP)

    员工管理系统 因为学业要求,需要完成一个过关检测,但是因为检测之前没有做好准备,且想到之前用mysql+jdbc+Struts2+bootstrap做成了一个ATM系统(主要有对数据的增删改查操作), ...

  10. sql -- update表子查询、多条件判断case when

    表结构: 需求 思路: 求出平均数 select avg(user_total) as avg from user_level 更新他的等级 update user_level set user_ra ...