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 构造函数 实例分析
Nov 26 Javascript
jQuery获取浏览器中的分辨率实现代码
Apr 23 Javascript
jQuery之排序组件的深入解析
Jun 19 Javascript
原始XMLHttpRequest方法详情回顾
Nov 28 Javascript
悬浮数字的实现案例
Feb 19 Javascript
jquery显示隐藏input对象
Jul 21 Javascript
很棒的Bootstrap选项卡切换效果
Jul 01 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
Ionic学习日记实现验证码倒计时
Feb 08 Javascript
Vue中使用sass实现换肤功能
Sep 07 Javascript
vue axios重复点击取消上一次请求封装的方法
Jun 19 Javascript
详解React 条件渲染
Jul 08 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/10/02 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
angularJS 入门基础
2015/02/09 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
树莓派升级python的具体步骤
2020/07/05 Python
python打包生成so文件的实现
2020/10/30 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
介绍一下MD5加密算法
2016/11/12 面试题
迎国庆横幅标语
2014/10/08 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
公司管理建议书
2015/09/14 职场文书
详解Django的MVT设计模式
2021/04/29 Python
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python