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 相关文章推荐
JS Timing
Apr 21 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
Mar 03 Javascript
jquery实现弹出层效果实例
May 19 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
Mar 05 Javascript
AngularJS表单和输入验证实例
Nov 02 Javascript
JavaScript判断变量名是否存在数组中的实例
Dec 28 Javascript
玩转vue的slot内容分发
Sep 22 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
Oct 20 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
Nov 06 Javascript
创建Vue项目以及引入Iview的方法示例
Dec 03 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
js中值引用和地址引用实例分析
Jun 21 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漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
让您的菜单不离网站
2006/10/03 Javascript
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
原生js实现碰撞检测
2020/03/12 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
javascript实现下拉菜单效果
2021/02/09 Javascript
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
python 实现识别图片上的数字
2019/07/30 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
投资意向协议书
2015/01/29 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
2016年寒假家长评语
2015/10/10 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸