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 相关文章推荐
extjs 学习笔记(二) Ext.Element类
Oct 13 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
Feb 03 Javascript
推荐6款基于jQuery实现图片效果插件
Dec 07 Javascript
前端微信支付js代码
Jul 25 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
Aug 10 Javascript
JavaScript for循环 if判断语句(学习笔记)
Oct 11 Javascript
基于Vue实现图书管理功能
Oct 17 Javascript
详解基于vue-cli优化的webpack配置
Nov 06 Javascript
解决layui table表单提示数据接口请求异常的问题
Sep 24 Javascript
axios实现文件上传并获取进度
Mar 25 Javascript
JS+CSS实现随机点名(实例代码)
Nov 04 Javascript
ng-alain的sf如何自定义部件的流程
Jun 12 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程序
2006/10/09 PHP
初学CAKEPHP 基础教程
2009/11/02 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
两种php实现图片上传的方法
2016/01/22 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
Python探索之URL Dispatcher实例详解
2017/10/28 Python
python实现K最近邻算法
2018/01/29 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
Python request使用方法及问题总结
2020/04/26 Python
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
自动化职业生涯规划书范文
2014/01/03 职场文书
幼儿园老师辞职信
2014/01/20 职场文书
高级销售求职信
2014/02/21 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL