js库开发--参数传递及方法修改
<!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库开发--参数传递及方法修改的更多相关文章
- ArcServer JS API开发离线部署方法
1. 下载ArcGIS API for JavaScript 3.6 Library. (地址:http://support.esrichina.com.cn/uploadfile/Javascr ...
- js库开发
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- js库编写的环境和准备工作
在编写一个js库之前需要准备许多基础知识. 本人在编写之前主要参考了visjs和百度的echarts这两个库的部分内容,这之中提取出几个要点如下: 1.如何整理代码结构,使模块与模块分开又不至于出现调 ...
- 动态嵌套form,使用Stimulus Js库(前后端不分离)
我的git代码:https://github.com/chentianwei411/nested_form-Stimulus- Stimulus: https://www.cnblogs.co ...
- 解决同一页面jQuery多个版本或和其他js库冲突方法
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- ios实例开发精品文章推荐(8.12)11个处理触摸事件和多点触摸的JS库
11个处理触摸事件和多点触摸的JS库 触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的Web应用,我们需要借助浏览器的触摸事件来实现. ...
- 使用模块化工具打包自己开发的JS库(webpack/rollup)对比总结
打包JS库demo项目地址:https://github.com/BothEyes1993/bes-jstools 背景 最近有个需求,需要为小程序写一个SDK,监控小程序的后台接口调用和页面报错(类 ...
- 解决jQuery多个版本,与其他js库冲突方法
jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,这个问题 jquery早早就有给我们预留处理方法了,下面一起来看看解决办法. 1.同一页面jQuery多个版本或冲突解决方法. < ...
- <WEB>平板_手机开发_13 个处理触摸事件和多点触摸的JS 库
触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的 Web 应用,我们需要借助浏览器的触摸事件来实线. 下图是各种触摸事件说明: 本文我们 ...
随机推荐
- Tomcat 内存与优化篇
Tomcat 内存与优化一.Tomcat 运行环境介绍 1.Tomcat 本身无法直接在计算机上运行,需要依赖硬件基础上的操作系统和Java虚拟机: 2.Java 程序启动时JVM都会分配一个初始内存 ...
- JSTL学习笔记(核心标签)
一.JSTL标签分类: 核心标签 格式化标签 SQL标签 XML标签 JSTL函数 二.核心标签 引用方式:<%@ taglib prefix="c" uri=& ...
- .NET的 DataTable中某列求和
public DataTable ReportDetail { get; set; }//定义datatable属性 this.txtTotalPiece.Text = ReportDetail.Co ...
- 并行查询提高sql查询速度
新项目在使用Oracle开发中遇到测试库千万级数据导致数据慢,除去加索引和存储过程可以明显提速外,使用并行也可以提速 select /*+parallel(a,8)*/ a.* from a 加上/* ...
- 常用的方法,读取XML节点并赋值给List集合
一.前言 很多时候也可以直接在XML文件中配置好节点,在程序需要用到的时候,修改XML文件并不需要重新编译,这里是在极光推送中拿出来的一部分代码.代码简单,大家直接看例子吧. 二.实现过程 1.新创建 ...
- hdu1161Eddy's mistakes
Problem Description Eddy usually writes articles ,but he likes mixing the English letter uses, for e ...
- Django 运行报错 ImportError: No module named 'PIL'
importError: No module named pil WIN7 64位系统安装 Python PIL 首先通过easy_install安装 说找不到pil模块. 第二通过去官网找:http ...
- POJ 2195 Going Home / HDU 1533(最小费用最大流模板)
题目大意: 有一个最大是100 * 100 的网格图,上面有 s 个 房子和人,人每移动一个格子花费1的代价,求最小代价让所有的人都进入一个房子.每个房子只能进入一个人. 算法讨论: 注意是KM 和 ...
- 9、Khala实现0.01版QQ
这次来个有界面的. 登录界面: 主界面: 1.服务端开发: 只需创建一个类ChatType(./examples/HelloKhala/src/ChatType.cpp),在该类型中,核心为创建的两个 ...
- (原)使用vectot的.end()报错:iterators incompatible
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5070672.html 参考网址: http://blog.csdn.net/yxnyxnyxnyxny ...