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 href的用法
May 13 Javascript
javascript两种function的定义介绍及区别说明
May 02 Javascript
Jquery通过Ajax访问XML数据的小例子
Nov 18 Javascript
jquery手风琴特效插件
Feb 04 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
Mar 04 Javascript
jQuery+JSON实现AJAX二级联动实例分析
Dec 18 Javascript
利用Angularjs和bootstrap实现购物车功能
Aug 31 Javascript
利用vue实现模态框组件
Dec 19 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
JavaScript Date对象应用实例分享
Oct 30 Javascript
原生js实现文件上传、下载、封装等实例方法
Jan 05 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/02/19 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
半角全角相互转换的js函数
2009/10/16 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
Python实现保证只能运行一个脚本实例
2015/06/24 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
手写一个python迭代器过程详解
2019/08/27 Python
Python读取实时数据流示例
2019/12/02 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
妇产医师自荐信
2014/01/29 职场文书
仓库文员岗位职责
2014/04/06 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
先进党支部申报材料
2014/12/24 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书