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 相关文章推荐
jQuery 解析xml文件
Aug 09 Javascript
高效的获取当前元素是父元素的第几个子元素
Oct 15 Javascript
js实现全国省份城市级联下拉菜单效果代码
Sep 07 Javascript
JS与jQuery遍历Table所有单元格内容的方法
Dec 07 Javascript
jQuery Validation Plugin验证插件手动验证
Jan 26 Javascript
js获取当前时间(昨天、今天、明天)
Nov 23 Javascript
js 获取图像缩放后的实际宽高,位置等信息
Mar 07 Javascript
js和jquery中获取非行间样式
May 05 jQuery
JavaScript运动框架 解决速度正负取整问题(一)
May 17 Javascript
前端跨域的几种解决方式总结(推荐)
Aug 16 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
Nov 10 Javascript
js for终止循环 跳出多层循环
Oct 04 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 日志缩略名的创建函数代码
2010/05/26 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP类型约束用法示例
2016/09/28 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
js里面的变量范围分享
2020/07/18 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
python 多进程通信模块的简单实现
2014/02/20 Python
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
python实现Floyd算法
2018/01/03 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
科技节口号
2014/06/19 职场文书
美化环境标语
2014/06/20 职场文书
临床医学专业求职信
2014/08/08 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
学年个人总结范文
2015/03/05 职场文书
亮剑观后感300字
2015/06/05 职场文书
使用pytorch实现线性回归
2021/04/11 Python
Pandas数据类型之category的用法
2021/06/28 Python
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL