jquery高级编程
第1章、jQuery入门
| 类型检查 | |
| 对象 | 类型检查表达式 |
| String | typeof object === "string" |
| Number | typeof object === "number" |
| Boolean | typeof object === "boolean" |
| Object | typeof object === "object" |
| Element | object.nodeType |
| null | object === null |
| null 或 undefined | object == null |
| 使用jQuery API执行类型检查 | |
| 对象 | 用于类型检查的jquery方法 |
| Plain Object | jQuery.isPlainObject(object) jQuery 可以缩写为$ |
| Function | $.isFunction(object) |
| Array | $.isArray(object) |
| 检查undefined | |
| 对象 | |
| Global Variables | typeof variable === "undefined" |
| Local Variables | variable === undefined |
| Properties | object.prop === undefined |
第2章、JavaScript 基础
2.1、理解数值
2.1.1、在JavaScript中,所有的数值都是64位双精度,取值范围从-5e-324到1.7976931348623157e308。
2.1.2、直接加减会导致精度丢失问题。0.2+0.1 =>
function People(){ var name = "11"; this.getName = function() { return name; } this.setName = function(name_) { name = name_; } }
2.13、使用模块
模块化编程,上面就是模块化编程。
2.14、使用Js数组
var arr = new Array(); arr[0] = 0; arr[1] = "hello,Rocky!"; var arr = [0,"hello,Rocky"]
2.15、扩展类型
js支持将方法或者其他属性绑定到内置类型。
Function.prototype.method = function(name, func) { this.prototype[name] = func; return this; }
第3章、jQuery核心技术
| 表3-1 jQuery方法 | ||
| 方法 | 分类 | 描述 |
| .ready() | 事件 | 声明一个函数,当DOM完全加载后执行该函数 |
| .click() | 事件 | 为匹配的元素集设置click事件处理程序 |
| .ajax() | Ajax | jQuery的Ajax工具函数 |
| .addClass() | CSS | 为匹配的元素集添加一个CSS类 |
| .removeClass() | CSS | 从匹配的元素集中移除一个CSS类 |
| .attr() | Attributes | 获取或者设置指定属性的值 |
| .html() |
Atrributes、 DOM插入 |
获取匹配的第一个元素的html内容, 设置匹配元素的html内容 |
| .type() | 工具方法 | 判断一个对象在js内部的类型 |
3.1.1 工具函数
| jQuery函数 | ||
| $.type() |
判断对象类型 |
$.type(null) "null" $.type([]) "array" $.type({}) "object" |
| $.isEmptyObject() | 判断对象是否包含任何属性,包括继承的属性 |
$.isEmptyObject([]) true $.isEmptyObject("") true |
| $.isPlainObject() | 判断是否是对象 |
$.isPlainObject("111") false $.isPlainObject({}) true |
| $.extend() | 将一个或多个对象的内容合并到目标对象 |
$.extend(a,b,c) 将bc对象属性合并到a中,有重复属性覆盖 $.extend(a,b) 将b对象浅拷贝到a对象 $.extend(true,a,b) 将b对象深拷贝到a对象 |
| $.isFunction() | 判断是否是函数 |
$.isFunction($.isFunction) true $.isFunction($.isFunction()) false 不能用圆括号 |
| $.noop() | 存根函数 |
空函数 |
| $.makeArray() | 将一个类似数组的对象转换为真正的数组对象 |
$.makeArray(obj) |
| $.merge() | 将第二个数组元素追加到第一个数组中 |
$.merge(arr1,arr2) |
| $.inArray() | 判断数组是否包含元素,成功返回索引,失败返回-1 |
$.inArray(vaule,arr) |
| $.unique() | 删除dom元素数组中重复的元素 |
c =$.makeArray($("div")) $.unique(c.concat(c)) |
| $.map() | 循环处理数组元素 |
$.map(c,function(v,i){console.log(v)}) |
| $.trim() | 去除字符串首尾空格字符 |
$.trim(" string ") |
| $.each() | 迭代函数 |
|
| $.queue() | 在匹配元素上显示将要执行的函数队列 | |
| $.clearQueue() | 从队列中移除所有还没被运行的函数 | |
| $.dequeue() | 对于匹配的元素执行下一个函数 | |
| $.grep() | 在数组中查找满足条件的元素 |
$.grep([1,2,3,4,5,6,7],function(value,index){ return value>2; },false) false代表不反转结果,true反转结果 |
| $.contains() | 检查dom元素是否是另外一个dom元素的子元素 |
$.contains($("head")[0],$("title")[0]) true |
| $.data() | 存储与特定元素相关的数据 | |
| $.parseXML() | 将字符串解析为XML文档 | |
| $.parseJSON() | 解析JSON字符串 | $.parseJSON("{"xx":"xxx"}") |
| $.isWindow() | 判断是否是一个浏览器窗口 | $.isWindow(window) true |
| $.isXMLDoc() | 判断一个Dom节点是否属于一个XML文档,或该节点是否是XML文档 | |
| $.now() | 获取当前时间的数值 | |
| $.support | 属性集合,表示不同浏览器的特性和bug | $.support.ajax 是否支付ajax |
| $.globalEval() | 在全局上下文执行某些js代码 | $.globalEval("console.log(1223);") |
第4章、选择和操作DOM元素
jQuery 选择器
| 选择器 | 实例 | 选取 |
|---|---|---|
| * | $("*") | 所有元素 |
| #id | $("#lastname") | id="lastname" 的元素 |
| .class | $(".intro") | class="intro" 的所有元素 |
| .class,.class | $(".intro,.demo") | class 为 "intro" 或 "demo" 的所有元素 |
| element | $("p") | 所有 <p> 元素 |
| el1,el2,el3 | $("h1,div,p") | 所有 <h1>、<div> 和 <p> 元素 |
| :first | $("p:first") | 第一个 <p> 元素 |
| :last | $("p:last") | 最后一个 <p> 元素 |
| :even | $("tr:even") | 所有偶数 <tr> 元素,索引值从 0 开始,第一个元素是偶数 (0),第二个元素是奇数 (1),以此类推。 |
| :odd | $("tr:odd") | 所有奇数 <tr> 元素,索引值从 0 开始,第一个元素是偶数 (0),第二个元素是奇数 (1),以此类推。 |
| :first-child | $("p:first-child") | 属于其父元素的第一个子元素的所有 <p> 元素 |
| :first-of-type | $("p:first-of-type") | 属于其父元素的第一个 <p> 元素的所有 <p> 元素 |
| :last-child | $("p:last-child") | 属于其父元素的最后一个子元素的所有 <p> 元素 |
| :last-of-type | $("p:last-of-type") | 属于其父元素的最后一个 <p> 元素的所有 <p> 元素 |
| :nth-child(n) | $("p:nth-child(2)") | 属于其父元素的第二个子元素的所有 <p> 元素 |
| :nth-last-child(n) | $("p:nth-last-child(2)") | 属于其父元素的第二个子元素的所有 <p> 元素,从最后一个子元素开始计数 |
| :nth-of-type(n) | $("p:nth-of-type(2)") | 属于其父元素的第二个 <p> 元素的所有 <p> 元素 |
| :nth-last-of-type(n) | $("p:nth-last-of-type(2)") | 属于其父元素的第二个 <p> 元素的所有 <p> 元素,从最后一个子元素开始计数 |
| :only-child | $("p:only-child") | 属于其父元素的唯一子元素的所有 <p> 元素 |
| :only-of-type | $("p:only-of-type") | 属于其父元素的特定类型的唯一子元素的所有 <p> 元素 |
| parent > child | $("div > p") | <div> 元素的直接子元素的所有 <p> 元素 |
| parent descendant | $("div p") | <div> 元素的后代的所有 <p> 元素 |
| element + next | $("div + p") | 每个 <div> 元素相邻的下一个 <p> 元素 |
| element ~ siblings | $("div ~ p") | <div> 元素同级的所有 <p> 元素 |
| :eq(index) | $("ul li:eq(3)") | 列表中的第四个元素(index 值从 0 开始) |
| :gt(no) | $("ul li:gt(3)") | 列举 index 大于 3 的元素 |
| :lt(no) | $("ul li:lt(3)") | 列举 index 小于 3 的元素 |
| :not(selector) | $("input:not(:empty)") | 所有不为空的输入元素 |
| :header | $(":header") | 所有标题元素 <h1>, <h2> ... |
| :animated | $(":animated") | 所有动画元素 |
| :focus | $(":focus") | 当前具有焦点的元素 |
| :contains(text) | $(":contains('Hello')") | 所有包含文本 "Hello" 的元素 |
| :has(selector) | $("div:has(p)") | 所有包含有 <p> 元素在其内的 <div> 元素 |
| :empty | $(":empty") | 所有空元素 |
| :parent | $(":parent") | 匹配所有含有子元素或者文本的父元素。 |
| :hidden | $("p:hidden") | 所有隐藏的 <p> 元素 |
| :visible | $("table:visible") | 所有可见的表格 |
| :root | $(":root") | 文档的根元素 |
| :lang(language) | $("p:lang(de)") | 所有 lang 属性值为 "de" 的 <p> 元素 |
| [attribute] | $("[href]") | 所有带有 href 属性的元素 |
| [attribute=value] | $("[href='default.htm']") | 所有带有 href 属性且值等于 "default.htm" 的元素 |
| [attribute!=value] | $("[href!='default.htm']") | 所有带有 href 属性且值不等于 "default.htm" 的元素 |
| [attribute$=value] | $("[href$='.jpg']") | 所有带有 href 属性且值以 ".jpg" 结尾的元素 |
| [attribute|=value] | $("[title|='Tomorrow']") | 所有带有 title 属性且值等于 'Tomorrow' 或者以 'Tomorrow' 后跟连接符作为开头的字符串 |
| [attribute^=value] | $("[title^='Tom']") | 所有带有 title 属性且值以 "Tom" 开头的元素 |
| [attribute~=value] | $("[title~='hello']") | 所有带有 title 属性且值包含单词 "hello" 的元素 |
| [attribute*=value] | $("[title*='hello']") | 所有带有 title 属性且值包含字符串 "hello" 的元素 |
| [name=value][name2=value2] | $( "input[id][name$='man']" ) | 带有 id 属性,并且 name 属性以 man 结尾的输入框 |
| :input | $(":input") | 所有 input 元素 |
| :text | $(":text") | 所有带有 type="text" 的 input 元素 |
| :password | $(":password") | 所有带有 type="password" 的 input 元素 |
| :radio | $(":radio") | 所有带有 type="radio" 的 input 元素 |
| :checkbox | $(":checkbox") | 所有带有 type="checkbox" 的 input 元素 |
| :submit | $(":submit") | 所有带有 type="submit" 的 input 元素 |
| :reset | $(":reset") | 所有带有 type="reset" 的 input 元素 |
| :button | $(":button") | 所有带有 type="button" 的 input 元素 |
| :image | $(":image") | 所有带有 type="image" 的 input 元素 |
| :file | $(":file") | 所有带有 type="file" 的 input 元素 |
| :enabled | $(":enabled") | 所有启用的元素 |
| :disabled | $(":disabled") | 所有禁用的元素 |
| :selected | $(":selected") | 所有选定的下拉列表元素 |
| :checked | $(":checked") | 所有选中的复选框选项 |
| .selector | $(selector).selector | 在jQuery 1.7中已经不被赞成使用。返回传给jQuery()的原始选择器 |
| :target | $( "p:target" ) | 选择器将选中ID和URI中一个格式化的标识符相匹配的<p>元素 |
第5章、事件处理
jQuery 事件方法
| 方法 | 描述 |
| bind() | 向元素添加事件处理程序 |
| blur() | 添加/触发失去焦点事件 |
| change() | 添加/触发 change 事件 |
| click() | 添加/触发 click 事件 |
| dblclick() | 添加/触发 double click 事件 |
| delegate() | 向匹配元素的当前或未来的子元素添加处理程序 |
| die() | 在版本 1.9 中被移除。移除所有通过 live() 方法添加的事件处理程序 |
| error() | 在版本 1.8 中被废弃。添加/触发 error 事件 |
| event.currentTarget | 在事件冒泡阶段内的当前 DOM 元素 |
| event.data | 包含当前执行的处理程序被绑定时传递到事件方法的可选数据 |
| event.delegateTarget | 返回当前调用的 jQuery 事件处理程序所添加的元素 |
| event.isDefaultPrevented() | 返回指定的 event 对象上是否调用了 event.preventDefault() |
| event.isImmediatePropagationStopped() | 返回指定的 event 对象上是否调用了 event.stopImmediatePropagation() |
| event.isPropagationStopped() | 返回指定的 event 对象上是否调用了 event.stopPropagation() |
| event.namespace | 返回当事件被触发时指定的命名空间 |
| event.pageX | 返回相对于文档左边缘的鼠标位置 |
| event.pageY | 返回相对于文档上边缘的鼠标位置 |
| event.preventDefault() | 阻止事件的默认行为 |
| event.relatedTarget | 返回当鼠标移动时哪个元素进入或退出 |
| event.result | 包含由被指定事件触发的事件处理程序返回的最后一个值 |
| event.stopImmediatePropagation() | 阻止其他事件处理程序被调用 |
| event.stopPropagation() | 阻止事件向上冒泡到 DOM 树,阻止任何父处理程序被事件通知 |
| event.target | 返回哪个 DOM 元素触发事件 |
| event.timeStamp | 返回从 1970 年 1 月 1 日到事件被触发时的毫秒数 |
| event.type | 返回哪种事件类型被触发 |
| event.which | 返回指定事件上哪个键盘键或鼠标按钮被按下 |
| event.metaKey | 事件触发时 META 键是否被按下 |
| focus() | 添加/触发 focus 事件 |
| focusin() | 添加事件处理程序到 focusin 事件 |
| focusout() | 添加事件处理程序到 focusout 事件 |
| hover() | 添加两个事件处理程序到 hover 事件 |
| keydown() | 添加/触发 keydown 事件 |
| keypress() | 添加/触发 keypress 事件 |
| keyup() | 添加/触发 keyup 事件 |
| live() | 在版本 1.9 中被移除。添加一个或多个事件处理程序到当前或未来的被选元素 |
| load() | 在版本 1.8 中被废弃。添加一个事件处理程序到 load 事件 |
| mousedown() | 添加/触发 mousedown 事件 |
| mouseenter() | 添加/触发 mouseenter 事件 |
| mouseleave() | 添加/触发 mouseleave 事件 |
| mousemove() | 添加/触发 mousemove 事件 |
| mouseout() | 添加/触发 mouseout 事件 |
| mouseover() | 添加/触发 mouseover 事件 |
| mouseup() | 添加/触发 mouseup 事件 |
| off() | 移除通过 on() 方法添加的事件处理程序 |
| on() | 向元素添加事件处理程序 |
| one() | 向被选元素添加一个或多个事件处理程序。该处理程序只能被每个元素触发一次 |
| $.proxy() | 接受一个已有的函数,并返回一个带特定上下文的新的函数 |
| ready() | 规定当 DOM 完全加载时要执行的函数 |
| resize() | 添加/触发 resize 事件 |
| scroll() | 添加/触发 scroll 事件 |
| select() | 添加/触发 select 事件 |
| submit() | 添加/触发 submit 事件 |
| toggle() | 在版本 1.9 中被移除。添加 click 事件之间要切换的两个或多个函数 |
| trigger() | 触发绑定到被选元素的所有事件 |
| triggerHandler() | 触发绑定到被选元素的指定事件上的所有函数 |
| unbind() | 从被选元素上移除添加的事件处理程序 |
| undelegate() | 从现在或未来的被选元素上移除事件处理程序 |
| unload() | 在版本 1.8 中被废弃。添加事件处理程序到 unload 事件 |
| contextmenu() | 添加事件处理程序到 contextmenu 事件 |
| $.holdReady() | 用于暂停或恢复.ready() 事件的执行 |
第6章、HTML表单、数据和Ajax
$.data(element,key,value)存储数据 $.data(element,key) 获取数据 等价于 $(element).data(key,value) 和 $(element).data(key)
关于动画和特效就不写了,以及与jquery ui相关的内容也不介绍了。
jQuery扩展
$.extend({ localStorage: { getItem: function(name) { return localStorage.getItem(name); } } });