<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="base.css"/>
        <script src="sizzle.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <input type="button" id="btn" value="click" />
        <div id="ids" >
            <span>12</span>
            <div class="a">11</div>
            <div class="a">12</div>
            <div class="a">13</div>
        </div>
        
        <div><p class="a">3</p></div>
        
        
        <p>3</p>
        <script>
            var Base=function(args){
                this.elements=[];
                if(typeof args=="string")//string证明附带参数进来
                {
                    for(var i=0;i<Sizzle(args).length;i++)
                    {        
                        this.elements.push(Sizzle(args)[i]);
                    }
                }
                else if(typeof args=="object")
                {
                    if(args!=undefined)
                    {
                        this.elements[0]=args;
                    }
                }
            }
            var myquery=function(args){
                return new Base(args);
            }

//            //id弃用,使用sizzle来获取
//            Base.prototype.getid=function(args){
//                var thisid=document.getElementById(args);
//                return this.elements.push(thisid)
////                return this;
//            };
            //tag
//            Base.prototype.gettags=function(args){
//                var tag=document.getElementsByTagName(args);
//                for(var i=0;i<tag.length;i++)
//                {
//                    this.elements.push(tag[i])
//                }
//                return this;
//            }
            //css
            Base.prototype.css=function(attr,value)
            {
                //console.log(arguments.length)
                if(typeof arguments[0]=="object"&&arguments.length==1)//传递的对象
                {
                    for(var i=0;i<this.elements.length;i++)
                    {
                        //alert(this.elements)
                        for(var key in arguments[0]){  
                            this.elements[i].style[key]=arguments[0][key];
                        }
                    }
                }
                else
                {
                    console.log("b")
                    for(var i=0;i<this.elements.length;i++)
                    {
                        if(arguments.length==1)
                        {
                            if(typeof window.getComputedStyle!=undefined)
                            {
                                //复合属性值无从获取在ie和火狐里面
                                return document.defaultView.getComputedStyle(this.elements[i],null)[attr];
                            }
                            else if(typeof this.elements[i].currentStyle!=undefined)
                            {
                                //console.log(this.elements[i].currentStyle[attr])
                                return this.elements[i].currentStyle[attr];
                            }
                        }
                        else
                        {
                            this.elements[i].style[attr]=value;
                        }
                        
                    }
                }
                
                return this;
            }
            //html
            Base.prototype.html=function(args){
                console.log(this.elements.length)
                for(var i=0;i<this.elements.length;i++)
                {
                    if(arguments.length==0)
                    {
                        return this.elements[i].innerHTML;
                    }
                    else
                    {
                        this.elements[i].innerHTML=args;
                    }
                    
                }
                return this;
            }
            //class
//            Base.prototype.getclass=function(attr,area){
//                //Sizzle(".a")[1]
//                var param=null;
//                if(arguments.length==2)
//                {
//                    for(var i=0;i<Sizzle(area+" ."+attr).length;i++)
//                    {        
//                        this.elements.push(Sizzle(area+" ."+attr)[i]);
//                    }
//                }
//                else
//                {
//                    var classes=document.getElementsByTagName("*");
//                    for(var i=0;i<classes.length;i++)
//                    {
//                        if(classes[i].className==attr)
//                        {
//                            //console.log(classes[i])
//                            this.elements.push(classes[i]);
//                        }
//                    }
//                }
//                return this;
//            }
            //eq方法
            Base.prototype.eq=function(num){
                var tempelement=this.elements[num];
                this.elements=[];
                this.elements[0]=tempelement;
                return this;
            }
            //addclass
            Base.prototype.addclass=function(classname){
                for(var i=0;i<this.elements.length;i++)
                {
                    //去重
                    if(!this.elements[i].className.match(new RegExp('(\\s|^)'+classname+'($|\\s)')))
                    {
                        this.elements[i].className+=" "+classname
                    }
                    
                }
                return this;
            }
            //removeclass
            Base.prototype.removeclass=function(classname){
                for(var i=0;i<this.elements.length;i++)
                {
                    //去重
                    if(this.elements[i].className.match(new RegExp('(\\s|^)'+classname+'($|\\s)')));
                    {
                        this.elements[i].className=this.elements[i].className.replace(new RegExp('(\\s|^)'+classname+'($|\\s)')," ");
                    }
                    
                }
                return this;
            }
//            //addcss
//            Base.prototype.addcss=function(num,selectortxt,csses,ind){
//                var sheet=document.styleSheets[num];
//                if(typeof sheet.insertRule!=undefined)
//                {
//                    sheet.insertRule(selectortxt+"{"+csses+"}",ind)
//                }
//                else if(sheet.addRule!=undefined)
//                {
//                    sheet.addRule(selectortxt,csses,ind)
//                }
//                return this;
//            }
//            //removecss
//            Base.prototype.removecss=function(num,ind){
//                var sheet=document.styleSheets[num];
//                if(typeof sheet.deleteRule!=undefined)
//                {
//                    sheet.deleteRule(ind)
//                }
//                else if(sheet.removeRule!=undefined)
//                {
//                    sheet.removeRule(ind)
//                }
//                return this;
//            }
            //插件扩展
            Base.prototype.extend=function(name,fn){
                Base.prototype[name]=fn;
            }
//            myquery().extend('bbb',function(){
//                alert("a")
//            })
//            myquery().bbb();
            //现代事件绑定
            
            Base.prototype.addevent=function(obj,type,fn){
                if(typeof obj.addEventListener!='undefined')
                {
                    obj.addEventListener(type,fn,false);
                }
                else
                {
                    if(!obj.events)
                    {
                        obj.events={};
                    }
                    if(!obj.events[type])
                    {
                        obj.events[type]=[];
                        if(obj.events["on"+type])//如果没有ontype点击事件,那么我们把fn存放到第一个type的位置
                        {
                            obj.events[type][0]=fn;
                        }
                    }
                    else
                    {
                        if(Base.prototype.addevent.compare(obj.events[type],fn))
                        return false;
                    }
                    obj.events[type][Base.prototype.addevent.countnum++]=fn;
                    obj["on"+type]=Base.prototype.addevent.exec;
                }
            }
            Base.prototype.addevent.countnum=1;//ie8一下事件计数器
            Base.prototype.addevent.exec=function(e){
                var e=event||window.event;
                for(var i in this.events[e.type])
                {
                    this.events[e.type][i].call(this,e);
                }
            }
            Base.prototype.addevent.compare=function(type,fn){
                
                for(var i in type)
                {
                    if(type[i]==fn)
                    {
                        return true;
                    }
                }
                return false;
            }
            //现代事件删除
            Base.prototype.removevent=function(obj,type,fn){
                if(typeof obj.removeEventListener!='undefined')
                {
                    obj.removeEventListener(type,fn,false);
                }
                else
                {
                    for(var i in obj.events[type])
                    {
                        if(obj.events[type][i]==fn)
                        {
                            delete obj.events[type][i];
                        }
                    }
                }
            }
console.log(myquery("div p").eq(0).css({"color":"red","background":"red"}))
//var objs=document.getElementById("btn");
//            myquery().addevent(objs,"click",fn1)
//            myquery().addevent(objs,"click",fn1)
//            myquery().addevent(objs,"click",fn1)
//            myquery().removevent(objs,"click",fn1)
//            
//            function fn1(){
//                alert("a1"+this.value)
//            }
//            function fn2(){
//                alert("a2"+this.value)
//            }
//            function fn3(){
//                alert("a3"+this.value)
//            }
            //console.log(Sizzle("#ids .a")[2].innerHTML)
        </script>
        
    </body>
</html>

js库开发--参数传递及方法修改的更多相关文章

  1. ArcServer JS API开发离线部署方法

      1. 下载ArcGIS API for JavaScript 3.6 Library. (地址:http://support.esrichina.com.cn/uploadfile/Javascr ...

  2. js库开发

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...

  3. js库编写的环境和准备工作

    在编写一个js库之前需要准备许多基础知识. 本人在编写之前主要参考了visjs和百度的echarts这两个库的部分内容,这之中提取出几个要点如下: 1.如何整理代码结构,使模块与模块分开又不至于出现调 ...

  4. 动态嵌套form,使用Stimulus Js库(前后端不分离)

    我的git代码:https://github.com/chentianwei411/nested_form-Stimulus- Stimulus:     https://www.cnblogs.co ...

  5. 解决同一页面jQuery多个版本或和其他js库冲突方法

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  6. ios实例开发精品文章推荐(8.12)11个处理触摸事件和多点触摸的JS库

    11个处理触摸事件和多点触摸的JS库 触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的Web应用,我们需要借助浏览器的触摸事件来实现. ...

  7. 使用模块化工具打包自己开发的JS库(webpack/rollup)对比总结

    打包JS库demo项目地址:https://github.com/BothEyes1993/bes-jstools 背景 最近有个需求,需要为小程序写一个SDK,监控小程序的后台接口调用和页面报错(类 ...

  8. 解决jQuery多个版本,与其他js库冲突方法

    jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,这个问题 jquery早早就有给我们预留处理方法了,下面一起来看看解决办法. 1.同一页面jQuery多个版本或冲突解决方法. < ...

  9. <WEB>平板_手机开发_13 个处理触摸事件和多点触摸的JS 库

    触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的 Web 应用,我们需要借助浏览器的触摸事件来实线. 下图是各种触摸事件说明: 本文我们 ...

随机推荐

  1. MySql命令——show,分页,正则表达式

    先要安装MySql,过程见 MySql5.1在Win7下的安装与重装问题的解决 不是教程,还没有写教程的资格,只是为了自己查阅而已!   show show databases; //显示所有数据库 ...

  2. 伪元素first-letter(首字母变大)

    让首字母变大 <p>Do you like to ride a bicycle?</p> p:first-letter{ font-size: 34px; }

  3. 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法【转自wjr2012的csdn blog】

    点击下载Genymotion-ARM-Translation.zip 将你的虚拟器运行起来,将下载好的zip包用鼠标拖到虚拟机窗口中,出现确认对跨框点OK就行.然后重启你的虚拟机.

  4. C语言编译过程简介

    刚开始接触编程的时候,只知道照书敲敲代码,一直都不知道为什么在windows平台下代码经过鼠标那样点击几下,程序的结果就会在那个黑色的屏幕上.现在找了个机会将C语言的编译原理做一下小小的总结,这样也能 ...

  5. win7 Oracle 11g安装及安装中遇到的问题

    根据自己的系统从oracle官方下载安装包,官方地址:http://www.oracle.com/index.html win7的oracle 11g 安装包(2个): http://223.20.2 ...

  6. C++ Primer day 01

    1.标准输入与输出 #include<iostream> int main(){ int v1,v2; std::cout<<"Enter two numbers:& ...

  7. VS_QT中配置qDebug输出

    在使用qt_create时可以使用qDebug进行调试输出.在VS中也可以使用.但需要配置.配置过程如下图所示: 一.首先右击工程名,选择最后一个选项“Properties” 二.然后选择Linker ...

  8. QThread与其他线程间相互通信

    转载请注明链接与作者huihui1988 QThread的用法其实比较简单,只需要派生一个QThread的子类,实现其中的run虚函数就大功告成, 用的时候创建该类的实例,调用它的start方法即可. ...

  9. 软件体系结构经典问题——KWIC的分析和解决

    KWIC作为一个早年间在ACM的Paper提出的一个问题,被全世界各个大学的软件设计课程奉为课堂讲义或者作业的经典.(From Wiki,FYI,D. L. Parnas uses a KWIC In ...

  10. mybatis第一个入门demo

    学习框架技术,一般先写个demo,先知道是什么,然后在知道为什么,这也是进步的一种. 源码链接:http://pan.baidu.com/s/1eQJ2wLG