共享学习Jquery源码的一些东西
jQuery.extend({
expando : 生成唯一JQ字符串(内部)
noConflict() : 防止冲突
----------------------------------------------
isReady : DOM是否加载完(内部)
$(function(){});
rootjQuery.ready();=>$(doucment).ready(function(){});=>$().ready();=>jQuery.ready.promise().done(fn);//延迟对象==>$.ready();
DOMContentLoaded
window.onload=function(){};
----------------------------------------------
readyWait : 等待多少文件的计数器(内部)
----------------------------------------------
holdReady() : 推迟DOM触发
a.js={<script>alert(1)</script>}
$.holdReady(true);
$.getScript("a.js",function(){
$.holdReady(false);
});
alert(2);
---------------------------------------
ready() : 准备DOM触发
--------------------------------------------
isFunction() : 是否为函数
alert(typeof alert);
IE8以前返回Object
---------------------------------
isArray() : 是否为数组
Array.isArray();
--------------------------------------
isWindow() : 是否为window
alert($.isWindow(window));=>true
window作用:1.全局对象
2.浏览器窗口
---------------------------------------
isNumeric() : 是否为数字
alert(typrof 123);=>true
alert(typeof NaN) ;=>true
alert(isNumeric(123));=>true
alert(isNumeric(NaN));=>false
isFinite(Number.MAX_VALUE+1);//有限数字=>false
isFinite(123123123);=>true
---------------------------------------
type() : 判断数据类型
var a="Hello";=>String
var b=[];=>Array
var c={};=>json
var d=new Date();=>date
alert({}.toString.call([]))=>[object array]
原生的js区分不了json,date,数组
--------------------------------------------
isPlainObject() : 是否为对象自变量
( 1.不是Object 2.Dom节点 3.Window)=>false;
(constructor&&Object.prototype,"isprototype");
var obj={};=>true
var obj= new Object();=>true;
var obj=[];=>false;
----------------------------------------------
isEmptyObject() : 是否为空的对象
var obj=null;
var obj={};
var obj=[];
function aaa(){}
var obj=new aaa();
$.isEmptyObject(obj)=>true
++++++++++++++++++++
for(name in object ){}
系统自带得 循环不到
----------------------------------------------
error() : 抛出异常
$.error("这是错误");
便签
-----------------------------------------------
parseHTML() : 解析节点
var str ="<li></li><li></li><script><\/script>";
$.parseHTML(str,documrnt,true);==>[<li>,<li>,<script>]
$.parseHTML(str,documrnt,false);==>[<li>,<li>]
$("<li></li>")=>$.parseHTML();
核心创建DOM:jQuery.buildFragment();
-----------------------------------------------
parseJSON() : 解析JSON
var str='{"name":"Hello"}';
$.parseJSON(str);支持严格json格式
JSON.parse和eval;
JSON.stringify();【Json=>String】
------------------------------------------------
parseXML() : 解析XML
<script>
var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>",
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$title = $xml.find( "title" );
// Append "RSS Title" to #someElement
$( "#someElement" ).append( $title.text() );
// Change the title to "XML Title"
$title.text( "XML Title" );
// Append "XML Title" to #anotherElement
$( "#anotherElement" ).append( $title.text() );
</script>
new DOMParser().parseFromString(data,"text/xml");支持IE8以上
<parsererror>错误信息</parsererror>
ActiveXObject低版本的XML解析
-------------------------------------------------
noop() : 空函数
noop:function(){},
--------------------------------------------------
globalEval() : 全局解析JS
function test() {
jQuery.globalEval( "var newVar = true;" );//把局部变量转成全局变量
var newVar = true;//局部变量
}
test();
alert( newVar );
function test() {
var val=eval;
val("var a=1");
window.eval("var a=1");
}
alert(1);
----------------------------------------------
camelCase() : 转驼峰(内部)
margin-left -> maginLeft
IE : -ms-transform ->msTransfrom
其他 :-moz-transform ->MozTransfrom
----------------------------------------------
nodeName() : 是否为指定节点名(内部)
$(function(){
$.nodeName(document. documentElement,'html');=>true
$.nodeName(document. body,'html');=>false
});
----------------------------------------------
each() : 遍历集合
var arr=[1,2,3,4];
var json={"id":"111","name":"zhangsan "}
this ->{0:,1:,length:2}
$.each(arr,function(i,value){
alert(value);
});
----------------------------------------------
trim() : 去前后空格
IE 低版本需要自己写正则
var str =" Hello ";
alert("("+str+")");
alert("("+$.trim(str)+")");
----------------------------------------------
makeArray() : 类数组转真数组
var str="Hello";
$.makeArray(str); -> [Hello]
----------------------------------------------
inArray() : 数组版indexOf
var arr={'a','b','c','d'}
$.inArray('b',arr); -> 2
$.inArray('w',arr); -> -1
----------------------------------------------
merge() : 合并数组
if : $.merge(['a','b'],['c','d']); ->['a','b','c','d']
else: $.merge(['a','b'],{0:'c',1:'d'}); ->{0:'a',1:'b',2:'c',3:'d'}
$.merge({0:'a',1:'b',length:2},{0:'c',1:'d'}); -> {0:'a',1:'b',2:'c',3:'d',length:4}
$.merge({0:'a',1:'b',length:2},['c','d']); -> {0:'a',1:'b',2:'c',3:'d',length:4}
----------------------------------------------
grep() : 过滤新数组
var arr=[1,2,3,4];
arr=$.grep(arr,function(n,i){
return n>2;
}); ->[3,4]
arr=$.grep(arr,function(n,i){
return n>2;
},true); ->[1,2]
----------------------------------------------
map() : 映射新数组
var arr=[1,2,3,4];
arr=$.map(arr,function(n){
return n+1;
}); ->[2,3,4,5]
----------------------------------------------
guid : 唯一标识符(内部)
事件函数关联,查找和关联
----------------------------------------------
proxy() : 改this指向
function show(n1,n2){
alert(n1);
alert(n2);
alert(this);
}
$.proxy(show,document)(3,4); ->3,4
$.proxy(show,document,3,4)(); ->3,4
$.proxy(show,document,3)(4); ->3,4
简化的写法:
var obj={
show : function(){
alert(this);
}
}
$.proxy(obj.show,obj) ===$.proxy(obj,"show")
----------------------------------------------
access() : 多功能值操作(内部)
$().css(); $().attr() get/set
$(function(){
$("#div1").css("background")//get
$("#div1").css("background","yellow")//set
$("#div1").css({background : "yellow" , width : "300px"}) //多值set
});
<div id='div1' style="width:100px;height:100;background:red"></div>
----------------------------------------------
now() : 当前时间
$.now();//1970.1.1距今的毫秒数
now : Date.now 低版本的不支持
----------------------------------------------
swap() : CSS交换(内部)
$(function(){
$("#div1").css("width")//jquery ->100
$("#div1").get(0).offserWidth;//源生display:none ->0
});
<div id='div1' style="width:100px;height:100;background:red;display:none"></div>
实现方式 : 把值去掉,获取值,添加样式
----------------------------------------------
});
(819).jQuery.ready.promise = function(){}; 监测DOM的异步操作(内部)
$().ready();
---------------------------------------------------------
function isArraylike(){} 类似数组的判断(内部)
function show(){
arguments.isArraylike();
}
show('a','b','c','d');
------------------------------------------------------------
rootjQuery=jQuery(document);
- jQuery常用工具方法
前面的话 jQuery提供一些与元素无关的工具方法,不必选中元素,就可以直接使用这些方法.如果理解原生javascript的继承原理,那么就能理解工具方法的实质.它是定义在jQuery构造函数上的方法 ...
- jquery 扩展插件方法
分析插件jquery.countdown.js (function($) { $.fn.countdown = function(options) { // default options var d ...
- jquery的工具方法isFunction/isArray/isWindow/isNumeric/isPlainObject/isEmptyObject
isFunction : 是否函数 isArray : 是否数组 isWindow : 是否window isNumeric : 是否数字 type : 数据类型方法 isPlainObject : ...
- jquery 常用工具方法
inArray(value, array [, fromIndex ])方法类似于原生javascript的indexOf()方法,没有找到匹配元素时它返回-1.如果数组第一个元素匹配参数,那么$.i ...
- jQuery 第九章 工具方法之插件扩展 $.extend() 和 $.fn.extend()
$.extend() $.fn.extend() -------------------------------------------------- $.extend() 插件扩展(工具方法) jq ...
- Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- jQuery工具方法
目录 常用工具方法 判断数据类型的方法 Ajax操作 $.ajax 简便写法 Ajax事件 返回值 JSONP 文件上传 参考链接 jQuery函数库提供了一个jQuery对象(简写为$),这个对象本 ...
- 使用jquery获取url及url参数的方法及定义JQuery扩展方法
1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javascript的基础的window对象,并没有用jquery的知识. 2.jquery获取 ...
- jQuery源代码 解析一 工具方法
1. 外层沙箱以及命名空间$ 几乎稍微有点经验前端人员都这么做,为了避免声明了一些全局变量而污染,把代码放在一个"沙箱执行",然后在暴露出命名空间(可以为API,函数,对象): 2 ...
随机推荐
- Hadoop 2.2 YARN分布式集群搭建配置流程
搭建环境准备:JDK1.6,SSH免密码通信 系统:CentOS 6.3 集群配置:NameNode和ResourceManager在一台服务器上,三个数据节点 搭建用户:YARN Hadoop2.2 ...
- Codeforces Round #364 (Div.2) D:As Fast As Possible(模拟+推公式)
题目链接:http://codeforces.com/contest/701/problem/D 题意: 给出n个学生和能载k个学生的车,速度分别为v1,v2,需要走一段旅程长为l,每个学生只能搭一次 ...
- SCAU 1138 代码等式
1138 代码等式 时间限制:500MS 内存限制:65536K提交次数:59 通过次数:21 题型: 编程题 语言: 无限制 Description 一个代码等式就是形如x1x2...xi=y ...
- 浏览器插件-ActiveX
浏览器插件:B/S模式下通过在客户端浏览器安装插件调用外设或者处理特殊格式数据. 常用插件有身份证阅读器.sim卡阅读器.银行卡校验插件.手写板插件.小键盘插件: 处理表格数据的华表插件.图片合成插件 ...
- (DP6.1.4.2)POJ 1088 滑雪
其实下面用到的是搜索.(呜呜,DP写的过了测试用例但是却总是AC不了,所以改用搜索来做了) /* * POJ_1088.cpp * * Created on: 2013年10月13日 * Author ...
- Unity3D之Mecanim动画系统学习笔记(三):Animation View
动画组件之间的关系 我们先看一张图: 这里我们可以看到,我们在GameObject之上绑定的Animator组件是控制模型进行动画播放的. 而其属性Controller则对应一个Animator Co ...
- ags注册
在电脑里找到2个 ESRIRegAsm.exe C:\Program Files (x86)\Common Files\ArcGIS\bin C:\Program Files\Common Files ...
- CustomerSOList
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 脚本命令高级Bash脚本编程指南(31):数学计算命令
题记:写这篇博客要主是加深自己对脚本命令的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 高等Bash脚本编程指南(31):数学盘算命令 成于坚持,败于止步 操作数字 factor ...
- JQuery Plugin 1 - Simple Plugin
1. How do you write a plugin in jQuery? You can extend the existing jQuery object by writing either ...