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
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
javascript获得服务器端控件的ID的实现代码
Dec 28 Javascript
jQuery中(function(){})()执行顺序的理解
Mar 05 Javascript
JQueryEasyUI Layout布局框架的使用
Apr 08 Javascript
node.js中的url.resolve方法使用说明
Dec 10 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 Javascript
深入理解react-router@4.0 使用和源码解析
May 23 Javascript
vue页面切换过渡transition效果
Oct 08 Javascript
微信小程序如何调用json数据接口并解析
Jun 29 Javascript
jQuery操作动画完整实例分析
Jan 10 jQuery
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
用文本文件制作留言板提示(上)
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
深入解析php模板技术原理【一】
2008/01/10 PHP
PHP实现微信发红包程序
2015/08/24 PHP
php代码架构的八点注意事项
2016/01/25 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
php常用正则函数实例小结
2016/12/29 PHP
JS 文件传参及处理技巧分析
2010/05/13 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
python访问系统环境变量的方法
2015/04/29 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
python异步存储数据详解
2019/03/19 Python
python实现维吉尼亚算法
2019/03/20 Python
django如何实现视图重定向
2019/07/24 Python
如何基于Python创建目录文件夹
2019/12/31 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
项目合作协议书
2014/04/16 职场文书
入党积极分子评语
2014/05/04 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
如何用Python搭建gRPC服务
2021/06/30 Python