jquery连缀语法如何实现


Posted in Javascript onNovember 29, 2012

我想熟悉javascript的没有不知道jquery的吧,作为首屈一指的javascript框架,他的许多特性都让人兴奋不已,其中不得不提的就是特有的连缀书写语法了,那他到底只怎么实现的呢,我们也来实现一个吧.

sx.$=function(id){ 
var t=(typeof(id)=="string"?document.getElementById(id):id); 
t.text=function(){ 
return this.innerText?this.innerText:this.innerHTML.replace(//<.*?/>/igm,""); 
} 
t.html=function(){ 
return this.innerHTML?this.innerHTML:null; 
} 
t.first=function(){ 
return this.firstChild?this.firstChild.nodeName!="#text"?sx.$(this.firstChild):null:null; 
} 
t.last=function(){ 
return this.lastChild?this.lastChild.nodeName!="#text"?sx.$(this.lasChild):null:null; 
} 
t.pre=function(){ 
return this.previousSibling?sx.$(this.previousSibling):null; 
} 
t.next=function(){ 
return this.nextSibling?sx.$(this.nextSibling):null; 
} 
t.parent=function(){ 
return this.parentNode?sx.$(this.parentNode):null; 
} 
t.setevent=function(e,f){ 
if(t.attachEvent){ 
t.attachEvent("on"+e,f); 
}else{ 
t.addEventListener(e,f,false); 
} 
} 
t.removeevent=function(e,f){ 
if(t.dettachEvent){ 
t.dettachEvent("on"+e,f); 
}else{ 
t.removeEventListener(e,f,false); 
} 
} 
t.setstyle=function(s){ 
var s=s.split(","); 
for(var i=0;i<s.length;i++){ 
var s1=s[i].split(":"); 
this.style[s1[0]]=s1[1]; 
} 
} 
t.getstyle=function(s){ 
if(this.currentStyle){ 
return this.currentStyle[s]; 
}else{ 
return document.defaultView.getComputedStyle(this,null).getPropertyValue(s); 
} 
} 
t.selectpath=function(m){ 
var m1=m; 
var m=m.split("/"); 
var t=[]; 
var e=this.getElementsByTagName("*"); 
for(var i=0;i<e.length;i++){ 
var e1=e[i] 
var a=""; 
var i1=m.length-1; 
while(e1!=this){ 
a=e1.tagName+"/"+a; 
e1=e1.parentNode; 
//alert(a); 
} 
//alert(a); 
if(m1.toLowerCase()+"/"==a.toLowerCase()){ 
t.push(sx.$(e[i])); 
} 
} 
return t; 
} 
t.get=function(a){ 
return this.getAttribute(a); 
} 
t.set=function(a,v){ 
return this.setAttribute(a,v); 
} 
t.paste=function(h){ 
if(typeof(h)=="string"){ 
var d=document.createElement("span"); 
d.innerHTML=h; 
}else{ 
var d=document.createElement("span"); 
d.appendChild(h); 
} 
var t1=this.childNodes; 
for(var i=0;i<t1.length;i++){ 
alert(t1[i]) 
this.removeChild(t1[i]); 
} 
this.appendChild(d); 
d.removeNode(false); 
} 
return t; 
} 
sx.$$=function(){ 
var t=[] 
for(var i=0;i<arguments.length;i++){ 
t.push(sx.$(arguments[i])) 
} 
return t; 
}

上面的代码是我最近写跨平台的javascript框架的一段核心代码,可以看出我用的是递归实现连缀语法的,在自身的方法里不断调用自身,这样实验闭包,使对象连续操作.顺便说一下,我这里对t对象用的是方法,如果是属性的话,那么在innerHTML里会显示出来的.

马上要考试了,没有太多的时间学习与研究了,虽然自己的专业和计算机无关,但还是祝愿自己不要挂课吧.
文章不足之处,还望各位多多指正.

Javascript 相关文章推荐
JavaScript中__proto__与prototype的关系深入理解
Dec 04 Javascript
jQuery中prop()方法用法实例
Jan 05 Javascript
60行js代码实现俄罗斯方块
Mar 31 Javascript
使用纯javascript实现经典扫雷游戏
Apr 23 Javascript
浅析BootStrap栅格系统
Jun 07 Javascript
Vue.js每天必学之表单控件绑定
Sep 05 Javascript
原生js仿淘宝网商品放大镜效果
Feb 28 Javascript
Vue中保存用户登录状态实例代码
Jun 07 Javascript
json对象及数组键值的深度大小写转换问题详解
Mar 30 Javascript
JS实现键值对遍历json数组功能示例
May 30 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
Aug 20 Javascript
js不常见操作运算符总结
Nov 20 Javascript
javascript 使td内容不换行不撑开
Nov 29 #Javascript
json原理分析及实例介绍
Nov 29 #Javascript
javascript全局变量封装模块实现代码
Nov 28 #Javascript
Javascript Request获取请求参数如何实现
Nov 28 #Javascript
js移除事件 js绑定事件实例应用
Nov 28 #Javascript
js arguments对象应用介绍
Nov 28 #Javascript
web基于浏览器的本地存储方法应用
Nov 27 #Javascript
You might like
php 删除无限级目录与文件代码共享
2008/11/22 PHP
一个很不错的PHP翻页类
2009/06/01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
JS解析XML实例分析
2015/01/30 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
Python中os模块功能与用法详解
2020/02/26 Python
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
开会迟到检讨书
2014/01/08 职场文书
结婚典礼证婚词
2014/01/11 职场文书
机电系毕业生求职信
2014/07/11 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
高中教师个人总结
2015/02/10 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
党支部培养考察意见
2015/06/02 职场文书
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技