使用HTML5简单实现一个JQuery
2012-08-20 15:03
751 查看
最近在做一个Android平台的几个WebApp,一开始使用JQuery类库,在后来性能优化的时候发现有些问题:一是JQuery类库有点大,在网络加载的时候有点慢,二是加载类库执行有点慢;后来就可以是否应该用JQuery。大部分是用JQuery的时候,用的最多的也就是JQuery对DOM操作方便和Ajax方便;JQuery的开发代码有9000多行,而且很多功能我们是用不到的;加上开发平台是Android,浏览器当然固定是webkit内核了,所以兼容性的代码要去掉好大一部分。所以我开始考虑来写一个简单使用的代码库,这样就可以不用使用JQuery了。
JQuery最强大的地方莫过于她的选择器,要写个类库要满足这个功能;HTML5就提供了这个标准:document.querySelector、document.querySelectorAll!
document.querySelector返回的是DOM对象,document.querySelectorAll返回的是DOM数组,那么就可以这样来实现我们需要的JQuery功能了。
一百多行代码,很方便,不用在去加载那几百K的JQuery了。而且想怎么改就怎么改!
JQuery最强大的地方莫过于她的选择器,要写个类库要满足这个功能;HTML5就提供了这个标准:document.querySelector、document.querySelectorAll!
document.querySelector返回的是DOM对象,document.querySelectorAll返回的是DOM数组,那么就可以这样来实现我们需要的JQuery功能了。
(function (global){ var Query = { Insert : function (param) { var object = document.createElement(param.type); if(param.id) object.id = param.id; if(param.class) object.className = param.class; if(param.html) object.innerHTML = param.html; if(param.parent) { param.parent.append(object); } else{ document.body.appendChild(object); } }, Get : function (obj){ var ele = null; if(typeof(obj) == 'string'){ ele = document.querySelectorAll(obj); } else{ ele = [obj]; } var query = { element : ele, eq : function (i) { if(this.element && this.element.length > 0){ return $$(this.element[i]); } return null; }, get : function (i) { var _ = this.eq(i); return _ ? _.element[0] : null; }, html : function (html){ if(this.element && this.element.length > 0){ if(arguments.length == 1){ for (var i = 0; i < this.element.length; i++) { this.element[i].innerHTML = html; }; } else{ return this.element[0].innerHTML; } } }, css : function (name, value){ if(this.element && this.element.length > 0){ if(arguments.length == 2) { this.element[0].style[name] = value; } else{ return this.element[0].style[name]; } } }, append : function (object){ if(this.element && this.element.length > 0){ for (var i = 0; i < this.element.length; i++) { this.element[i].appendChild(object); } } }, remove : function (object){ if(this.element && this.element.length > 0){ for (var i = 0; i < this.element.length; i++) { if(this.element[i].parentNode){ this.element[i].parentNode.removeChild(this.element[i]); } else{ document.body.removeChild(this.element[i]); } }; } }, insert : function (param){ if(this.element && this.element.length > 0){ for (var i = 0; i < this.element.length; i++) { var object = document.createElement(param.type); if(param.id) object.id = param.id; if(param.class) object.className = param.class; if(param.html) object.innerHTML = param.html; this.element[i].appendChild(object); } } }, click : function (fn){ this.bind('click', fn); }, bind : function(type, fn){ if(this.element && this.element.length > 0){ for (var i = 0; i < this.element.length; i++) { this.element[i].addEventListener(type, fn); } } }, attr : function(name){ if(this.element && this.element.length > 0){ var attr = this.element[0].attributes[name]; if(attr){ return attr.value; } } return null; } } return query; }, ajax : function(p) { var xhr = new XMLHttpRequest(); if(p.url){ if(p.type && p.type.toUpperCase() == 'POST') { p.type = 'POST'; } else{ p.type = 'GET'; } if(p.async){ p.async = true; } else{ p.async = false; } xhr.onerror = p.error; xhr.open(p.type, p.url, p.async); xhr.onreadystatechange = function () { if(xhr.readyState === 1){ if(p.beforeSend) { p.beforeSend(); } } else if(xhr.readyState === 4){ if(xhr.status == 200) { p.success && p.success(xhr.responseText); } else{ console.log(p.url, xhr.status); p.error && p.error( xhr.status, xhr ); } p.complete && p.complete(); } } xhr.send( p.data || null ); } this.abort = function (){ xhr.abort(); }; } }; global.Query = global.$ = Query; global.$$ = Query.Get; })(window);
一百多行代码,很方便,不用在去加载那几百K的JQuery了。而且想怎么改就怎么改!
相关文章推荐
- 使用HTML5和jQuery插件Reel实现一个超酷的星际争霸2兵种动画360度预览效果
- 使用Jquery原理实现一个简单的Ajax的支持JS类
- DayDayUp之HTML5学习笔记 二 使用header、aside、section、footer实现一个简单的界面
- 使用HTML5和jQuery插件Quicksand实现一个超酷的星际争霸2兵种分类展示效果
- 使用HTML5和jQuery插件Quicksand实现一个超酷的星际争霸2兵种分类展示效果
- 使用HTML5和jQuery插件Quicksand实现一个超酷的星际争霸2兵种分类展示效果
- HTML5简单轮播的实现(使用JQuery)
- 使用HTML5和jQuery插件Reel实现一个超酷的星际争霸2兵种动画360度预览效果
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
- JQuery.cycle()实现图片轮播简单使用
- JQuery实现一个简单的鼠标跟随提示效果
- 使用MongoDB和JSP实现一个简单的购物车系统实例
- 使用JQuery实现简单的半透明遮盖层 + 弹出框居中 Demo
- 简单说明什么是递归?什么情况会使用?并使用Java实现一个简单的递归程序。
- 使用简单jQuery工具来实现表单的验证
- thinkphp使用ajax、jquery、Mysql实现了简单的客户端通信功能
- 使用TypeScript实现简单的HTML5贪吃蛇游戏
- 使用JQuery和s3captche实现一个水果名字的验证
- 简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。