模仿jQuer封装一些常用的方法
来源:互联网 发布:数据资产管理平台 开源 编辑:程序博客网 时间:2024/05/16 11:07
var $ = function(){};
$.prototype = {
$id:function(id){
return document.getElementById(id);
},
//去除左边空格
ltrim:function(str){
return str.replace(/(^\s*)/g,'');
},
//去除右边空格
rtrim:function(str){
return str.replace(/(\s*$)/g,'');
},
//去除空格
trim:function(str){
return str.replace(/(^\s*)|(\s*$)/g, '');
},
//ajax - 前面我们学习的
myAjax:function(URL,fn){
var xhr = createXHR(); //返回了一个对象,这个对象IE6兼容。
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
fn(xhr.responseText);
}else{
alert("错误的文件!");
}
}
};
xhr.open("get",URL,true);
xhr.send();
//闭包形式,因为这个函数只服务于ajax函数,所以放在里面
function createXHR() {
//本函数来自于《JavaScript高级程序设计 第3版》第21章
if (typeof XMLHttpRequest != "undefined") {
return new XMLHttpRequest();
} else if (typeof ActiveXObject != "undefined") {
if (typeof arguments.callee.activeXString != "string") {
var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp"
],
i, len;
for (i = 0, len = versions.length; i < len; i++) {
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (ex) {
//skip
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
} else {
throw new Error("No XHR object available.");
}
}
},
//tab
tab:function(id) {
//如何获取某个父元素下面的子元素
var box = document.getElementById(id);
var spans = box.getElementsByTagName('span');
var lis = box.getElementsByTagName('li');
//两步走
//第一步: 先把上半部分实现
//群体绑定事件 -- 对所有的span绑定事件
//群体绑定事件
for(var i=0;i<spans.length;i++) {
//相亲法则 -- 给男一号一个代号 -- 怎么给 -- 自定义属性
spans[i].index=i;
spans[i].onmouseover = function() {
//排他思想 -- 将所有的span置为默认状态 --- 然后再将当前鼠标移上的span置为class -- select
for(var i=0;i<spans.length;i++) {
spans[i].className='';
lis[i].className='';
}
this.className='select';
lis[this.index].className='select';
}
}
},
//简单的数据绑定formateString
formateString:function(str, data){
return str.replace(/@\((\w+)\)/g, function(match, key){
return typeof data[key] === "undefined" ? '' : data[key]});
},
//给一个对象扩充功能
extendMany:function() {
var key,i = 0,len = arguments.length,target = null,copy;
if(len === 0){
return;
}else if(len === 1){
target = this;
}else{
i++;
target = arguments[0];
}
for(; i < len; i++){
for(key in arguments[i]){
copy = arguments[i][key];
target[key] = copy;
}
}
return target;
},
extend:function(tar,source) {
//遍历对象
for(var i in source){
tar[i] = source[i];
}
return tar;
},
//随机数
random: function (begin, end) {
return Math.floor(Math.random() * (end - begin)) + begin;
},
//给一个对象扩充功能
extendMany:function() {
var key,i = 0,len = arguments.length,target = null,copy;
if(len === 0){
return;
}else if(len === 1){
target = this;
}else{
i++;
target = arguments[0];
}
for(; i < len; i++){
for(key in arguments[i]){
copy = arguments[i][key];
target[key] = copy;
}
}
return target;
},
extend:function(tar,source) {
//遍历对象
for(var i in source){
tar[i] = source[i];
}
return tar;
},
//数据类型检测
isNumber:function (val){
return typeof val === 'number' && isFinite(val)
},
isBoolean:function (val) {
return typeof val ==="boolean";
},
isString:function (val) {
return typeof val === "string";
},
isUndefined:function (val) {
return typeof val === "undefined";
},
isObj:function (str){
if(str === null || typeof str === 'undefined'){
return false;
}
return typeof str === 'object';
},
isNull:function (val){
return val === null;
},
isArray:function (arr) {
if(arr === null || typeof arr === 'undefined'){
return false;
}
return arr.constructor === Array;
}
}
// 在框架中实例化,这样外面使用的久不用实例化了
$ = new $();
// 定义事件对象 专门放在放置事件相关操作
$.extend($,{
on:function(id,type,fn){
var dom = $.isString(id)?document.getElementById(id):id;
if(dom.addEventListener){
dom.addEventListener(type,fn, false);
} else if(dom.attachEvent){
document.attachEvent('on'+type,fn);
}
},
// 解除绑定事件
un:function(id,type,fn){
var dom = $$.isString(id)?document.getElementById(id):id;
if(dom.removeEventListener){
dom.removeEventListener(type,fn);
} else if(dom.detachEvent){
dom.detachEvent(type,fn);
}
},
// 点击事件
click:function(id,fn){
this.on(id,'click',fn);
},
// 鼠标一上去事件
mouseover:function(id,fn){
this.on(id,'mouseover',fn);
},
//鼠标离开事件
mouseout:function(id,fn){
this.on(id,'mouseout',fn);
},
// 鼠标悬浮事件
hover:function(id,fnOver,fnOut){
if(fnOver){
this.on(id,'mouseover',fnOver);
}
if(fnOut){
this.on(id,'mouseout',fnOut);
}
},
//事件委托
delegate:function(pid,eventType,selector,fn){
var parent = $.$id(pid);
function handle(e){
var target = $.GetTarget(e);
if()
}
},
// 事件兼容
getEvent:function(event){
return event?event:window.event;
},
// 获取目标
getTarget:function(event){
var e = $.getEvent(event);
return e.target || e.srcElement;
},
// 组织默认行为
preventDefault:function(event){
var event = $.getEvent(event);
if(event.preventDefault()){
event.preventDefault();
} else{
event.returnValue = false;
}
},
// 阻止冒泡
stopPropagation:function(event){
vaer event = $.getEvent(event);
if(event.stopPropagation){
event.stopPropagation();
} else {
event.cancelBubble = true;
}
}
$.prototype = {
$id:function(id){
return document.getElementById(id);
},
//去除左边空格
ltrim:function(str){
return str.replace(/(^\s*)/g,'');
},
//去除右边空格
rtrim:function(str){
return str.replace(/(\s*$)/g,'');
},
//去除空格
trim:function(str){
return str.replace(/(^\s*)|(\s*$)/g, '');
},
//ajax - 前面我们学习的
myAjax:function(URL,fn){
var xhr = createXHR(); //返回了一个对象,这个对象IE6兼容。
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
fn(xhr.responseText);
}else{
alert("错误的文件!");
}
}
};
xhr.open("get",URL,true);
xhr.send();
//闭包形式,因为这个函数只服务于ajax函数,所以放在里面
function createXHR() {
//本函数来自于《JavaScript高级程序设计 第3版》第21章
if (typeof XMLHttpRequest != "undefined") {
return new XMLHttpRequest();
} else if (typeof ActiveXObject != "undefined") {
if (typeof arguments.callee.activeXString != "string") {
var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp"
],
i, len;
for (i = 0, len = versions.length; i < len; i++) {
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (ex) {
//skip
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
} else {
throw new Error("No XHR object available.");
}
}
},
//tab
tab:function(id) {
//如何获取某个父元素下面的子元素
var box = document.getElementById(id);
var spans = box.getElementsByTagName('span');
var lis = box.getElementsByTagName('li');
//两步走
//第一步: 先把上半部分实现
//群体绑定事件 -- 对所有的span绑定事件
//群体绑定事件
for(var i=0;i<spans.length;i++) {
//相亲法则 -- 给男一号一个代号 -- 怎么给 -- 自定义属性
spans[i].index=i;
spans[i].onmouseover = function() {
//排他思想 -- 将所有的span置为默认状态 --- 然后再将当前鼠标移上的span置为class -- select
for(var i=0;i<spans.length;i++) {
spans[i].className='';
lis[i].className='';
}
this.className='select';
lis[this.index].className='select';
}
}
},
//简单的数据绑定formateString
formateString:function(str, data){
return str.replace(/@\((\w+)\)/g, function(match, key){
return typeof data[key] === "undefined" ? '' : data[key]});
},
//给一个对象扩充功能
extendMany:function() {
var key,i = 0,len = arguments.length,target = null,copy;
if(len === 0){
return;
}else if(len === 1){
target = this;
}else{
i++;
target = arguments[0];
}
for(; i < len; i++){
for(key in arguments[i]){
copy = arguments[i][key];
target[key] = copy;
}
}
return target;
},
extend:function(tar,source) {
//遍历对象
for(var i in source){
tar[i] = source[i];
}
return tar;
},
//随机数
random: function (begin, end) {
return Math.floor(Math.random() * (end - begin)) + begin;
},
//给一个对象扩充功能
extendMany:function() {
var key,i = 0,len = arguments.length,target = null,copy;
if(len === 0){
return;
}else if(len === 1){
target = this;
}else{
i++;
target = arguments[0];
}
for(; i < len; i++){
for(key in arguments[i]){
copy = arguments[i][key];
target[key] = copy;
}
}
return target;
},
extend:function(tar,source) {
//遍历对象
for(var i in source){
tar[i] = source[i];
}
return tar;
},
//数据类型检测
isNumber:function (val){
return typeof val === 'number' && isFinite(val)
},
isBoolean:function (val) {
return typeof val ==="boolean";
},
isString:function (val) {
return typeof val === "string";
},
isUndefined:function (val) {
return typeof val === "undefined";
},
isObj:function (str){
if(str === null || typeof str === 'undefined'){
return false;
}
return typeof str === 'object';
},
isNull:function (val){
return val === null;
},
isArray:function (arr) {
if(arr === null || typeof arr === 'undefined'){
return false;
}
return arr.constructor === Array;
}
}
// 在框架中实例化,这样外面使用的久不用实例化了
$ = new $();
// 定义事件对象 专门放在放置事件相关操作
$.extend($,{
on:function(id,type,fn){
var dom = $.isString(id)?document.getElementById(id):id;
if(dom.addEventListener){
dom.addEventListener(type,fn, false);
} else if(dom.attachEvent){
document.attachEvent('on'+type,fn);
}
},
// 解除绑定事件
un:function(id,type,fn){
var dom = $$.isString(id)?document.getElementById(id):id;
if(dom.removeEventListener){
dom.removeEventListener(type,fn);
} else if(dom.detachEvent){
dom.detachEvent(type,fn);
}
},
// 点击事件
click:function(id,fn){
this.on(id,'click',fn);
},
// 鼠标一上去事件
mouseover:function(id,fn){
this.on(id,'mouseover',fn);
},
//鼠标离开事件
mouseout:function(id,fn){
this.on(id,'mouseout',fn);
},
// 鼠标悬浮事件
hover:function(id,fnOver,fnOut){
if(fnOver){
this.on(id,'mouseover',fnOver);
}
if(fnOut){
this.on(id,'mouseout',fnOut);
}
},
//事件委托
delegate:function(pid,eventType,selector,fn){
var parent = $.$id(pid);
function handle(e){
var target = $.GetTarget(e);
if()
}
},
// 事件兼容
getEvent:function(event){
return event?event:window.event;
},
// 获取目标
getTarget:function(event){
var e = $.getEvent(event);
return e.target || e.srcElement;
},
// 组织默认行为
preventDefault:function(event){
var event = $.getEvent(event);
if(event.preventDefault()){
event.preventDefault();
} else{
event.returnValue = false;
}
},
// 阻止冒泡
stopPropagation:function(event){
vaer event = $.getEvent(event);
if(event.stopPropagation){
event.stopPropagation();
} else {
event.cancelBubble = true;
}
}
});
以上的方法只需要引入就可以用$.方法名调用,用起来还是比较方便的
0 0
- 模仿jQuer封装一些常用的方法
- appium一些常用方法的封装
- appium一些常用方法的封装
- ionic中一些常用的方法封装
- 自己重新实现QTP封装的一些常用的方法
- C# Windows Api的一些方法 封装 以及 常用参数
- C# Windows Api的一些方法 封装 以及 常用参数
- 常用的封装方法
- 一些常用的函数封装
- EasyUI的一些封装方法
- 用Vim模仿IDE的一些常用功能
- 用Vim模仿IDE的一些常用功能
- 常用ajax封装的方法
- iOS常用的封装方法
- 常用js方法的封装
- iOS封装常用的方法
- Selenium常用方法的封装
- 一些自己常用的封装的代码
- google引擎地址
- 添加友盟SDK和静态库
- vue热替换失效根本原因
- 08CMS之数据库字段在表单中的展现
- Windows 平台安装 MongoDB
- 模仿jQuer封装一些常用的方法
- Python单元测试框架unittest使用方法讲解
- bzoj1096: [ZJOI2007]仓库建设
- cadence 17.2学习笔记--
- Qt窗口屏幕居中显示
- (Swift 实现)二叉堆 —— 创建,增加节点,摘除最大节点
- 代码重构(编写优雅的前端代码)
- 关于Uncaught SyntaxError: Unexpected token <的前段异常解决方案。
- Struts2 工作原理