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实现网页跳转或用命令打开指定网页的解决方法
Jul 09 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
Mar 16 Javascript
JavaScript将数字转换成大写中文的方法
Mar 23 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
vue iview实现动态路由和权限验证功能
Apr 17 Javascript
js实现单元格拖拽效果
Feb 10 Javascript
Vue+webpack实现懒加载过程解析
Feb 17 Javascript
微信小程序实现电子签名并导出图片
May 27 Javascript
Vue3.0的优化总结
Oct 16 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全排列递归算法代码
2012/10/09 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
js select option对象小结
2013/12/20 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
Python线性回归实战分析
2018/02/01 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
python lxml中etree的简单应用
2019/05/10 Python
用Python配平化学方程式的方法
2019/07/20 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
面向对象编程的优势是什么
2015/12/17 面试题
应届大学生简历中的自我评价
2014/01/15 职场文书
中学教师培训制度
2014/01/31 职场文书
党员承诺书怎么写
2014/05/20 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
单位授权委托书范文
2014/08/02 职场文书
借名购房协议书范本
2014/10/06 职场文书
劳资员岗位职责
2015/02/13 职场文书
不同意离婚答辩状
2015/05/22 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python