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 相关文章推荐
Yii-自定义删除确认弹框(zyd)jquery实现代码
Mar 04 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
Jul 09 Javascript
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
简介JavaScript中Math.LOG10E属性的使用
Jun 14 Javascript
ES6中数组array新增方法实例总结
Nov 07 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
Nov 28 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
JavaScript实现创建自定义对象的常用方式总结
Jul 09 Javascript
详解如何webpack使用DllPlugin
Sep 30 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
Nov 22 Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 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
星际原理概述
2020/03/04 星际争霸
PHP脚本数据库功能详解(上)
2006/10/09 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
初识php MVC
2014/09/10 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
js 判断 enter 事件
2009/02/12 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
Python处理JSON数据并生成条形图
2016/08/05 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
如何查看python关键字
2021/01/17 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
会计专业自我鉴定范文
2013/10/06 职场文书
学术诚信承诺书
2014/05/26 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
《实心球》教学反思
2016/02/23 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android