4、JQuery
1. 什么是 jQuery
JQuery:Javascript+Query,使用 JavaScript 编写的 js 库,提高开发的效率
2. jQuery 特点
1. 轻量级框架:write less,do more 写的少,做的多。
2. 应用广泛。
3. 免费开源,文档丰富。
4. 可以辅助编写众多的第三方库。
3. 入门程序
步骤:
1. 引入 jquery.js
2. 使用
Title
4. JQuery 语法
4.1.语法
$(“选择器”).action()
4.2.说明
$:核心函数
选择器:JQuery 查找网页元素的表达式,返回的是 jquery 对象
action:jquery 内置函数,实现特定的功能
4.3.核心函数的功能
1. 获取 dom 对象
2. 创建 dom 对象
3. 克隆 dom 对象
5. 什么是 Jquery 对象
使用 jQuery 封装的 Dom 对象叫做 jQuery 对象
6. 使用 jQuery 对象的优缺点:
- 优点:jQuery 的扩展属性和函数在底层判断了浏览器以及版本实现了浏览器的兼容。
- 缺点:jQuery 扩展的函数只能实现基本的 dom 操作,但是对于元素独有的 htmldom 接口。
- 封装很少(例如 input、select()),对于 html5 新增的 DOM 方法也不支持,如果想实现类似功能,只能使用 dom 接口。
- 结论:为保证兼容性尽量使用 jQuery 对象的 API,但特殊功能也需要使用原生 dom 接口。
7. 编码习惯
如果获取的是 jQuery 对象,那么要在变量前面加上$。
- var $variable=jQuery 对象
- var variable=DOM 对象
8. DOM 转 Jquery 对象
8.1.语法
var $jquery 变量=$(dom 对象);
8.2.案例
Title
9. JQuery 转 Dom 对象
9.1.语法
1. jquery 对象[index]
2. jquery 对象.get(index)
9.2.案例
Title
10. 什么是 jQuery 选择器
用于获取 jQuery 对象的表达式
11. jQuery 选择器的基本语法
$(“选择器表达式”)
12. 基本选择器
1、基本选择器
? jQuery中最常用的选择器,通过元素的id,引用的样式类名、标签名、通配符来查找DOM元素。
- id选择器:选择一个具有指定id属性的单个元素。
- 示例:$("#ID");
- 元素选择器:参数为html标签名,返回当前网页的该标签对应的jQuery对象。
- 示例: $ ("div") ;
- 类选择器:参数为css的样式类名,返回使用当前样式类渲染的全部元素对应的jQuery对象。
- 示例:$(".myClass");
- 通配符选择器:匹配所有元素对应的jQuery对象。
- 示例:$("*") ;
2、组合(合并)选择器
- 语法:$(选择器 1,选择器 2,选择器 3,...) 或的关系(合并)
12.1. id 选择器
$("#id")
Title
我是div
12.2. 元素选择器
$("元素名")
Title
我是div1
我是div2
我是div3
我是p
我是span
12.3. 类选择器
$(".类名")
Title
我是div
我是p
我是span
12.4. 通配符选择器
$("*")匹配所有的元素
Title
我是div
我是p
我是span
12.5. 组合(合并)选择器
语法:
$(“选择器 1,选择器 2,选择器 3,...”) 或的关系(合并) 将每一个选择器匹配到的元素合并后一起返回。可以指定任意多个选择器,并将匹配到的元素合并到一个结果内。
Title
我是div1
我是div2
我是p
我是span
13. 属性选择器
13.1. 定义
通过元素的属性获取相应的元素
13.2. 分类
- [attribute]:匹配包含指定属性的元素。
- $("div[id]") 获取所有具有id值的div对象。
- [attribute=value]:匹配给定的属性是某个特定值的元素。
- $("input[name= 'userName']") 获取name取值为userName的输入框。
- [attribute!=value]:匹配所有不含有指定的属性,或者属性不等于特定值的元素。
- $("input [name!= 'userName']") 获取name取值为非userName或不具备name属性的输入框。
- [attribute ^=value]:匹配给定的属性是以某些值开始的元素
- $("input [name^= 'news']") 获取name取值以news开头的输入框。
- [attribute$=value]:匹配给定的属性是以某些值结尾的元素。
- $("input[name$= 'end']") 获取name取值以end结尾的输入框。
- [attribute*=value]:匹配给定的属性是以包含某些值的元素。
- $("input[name*= 'con']") 获取name取值包含con的输入框。
- [attributeFilter1][attributeFilterN]:组合使用。复合属性选择器。
- $("input[id][nama$= 'man']") 获取具有id属性,name取值以man结尾的输入框。
- [selector1][selector2][selector3]... 复合属性选择器,需要同时满足多个条件时使用
Title
我是div1
我是div2
我是di3
爱好:
爬山(name="newsletter")
骑行(name="newsletter")
看海贼王(name="accept")
看海贼王(name="accept" class="hzw")
看SEVENTEEN(name="carat")
注意:attr,prop
- attr:初始状态复选框没有选,点击按钮调用d方法,实现了选择,然后点击attr不选按钮,实现了不选,然后再次点击attr选择按钮,结果却没有选择,再反复点击没有任何反应。
- 解决方法:设置checked属性时,优先使用prop函数(较稳定)。
14. 层次选择器:
通过 DOM 元素之间的层次关系来获取特定元素,例如后代元素,子元素,相邻元素,兄弟元素等。
- parent child:匹配的parent选择器选择的元素下符合child选择器的后代元素(所有子孙)。
- $ ("form input") 获取form表单下所有input标签。
- parent > child:匹配的parent选择器选择的元素下所有符合child选择器的直接后代元素。
- $ ("form>input") 获取form表单下直接子节点input标签。
- prev + next:匹配符合prev选择器的元素后的下一个匹配next选择器的元素(同级兄弟)。
- $("label+input") 获取label标签的下一个input标签的dom元素。
- prev~siblings:匹配prev元素之后的所有 siblings 元素。
- $("label~input") 获取label标签后的所有input。
14.1. 后代选择器
使用空格,在给定的祖先元素下匹配所有的后代元素
14.2. 子元素选择器
使用>,在给定的父元素下匹配所有的子元素
14.3. 相邻元素选择器
使用+隔开, 匹配所有紧接在 prev 元素后的 next 元素(如果有,是一个元素)
14.4. 匹配 prev 元素之后的所有 siblings 元素
prev ~ siblings:匹配 prev 元素之后的所有 siblings 元素
Title
15. 基础过滤选择器
- :first:匹配找到的第一个元素。示例:$("li:first")
- :last :匹配找到的最后一个元素。示例:$("li: last")
- :not(selector):在返回集合清除不匹配指定选择器的元素。示例:$("input:not(:checked)")
- :even :匹配返回结果集合中索引值为偶数的元素。示例:$("li:even")
- :odd :匹配返回结果集合中索引值为基数的元素。示例:$("li: odd")
- :eq(index):匹配返回结果集中第index位置的元素。示例:$("li:eq(0)")
- :gt(index) :匹配所有大于指定索引值的元素。示例:$("li:gt(0)")
- :lt(index):匹配所有小于指定索引值的元素。示例:$("li:lt(2)")
- :header(固定写法):匹配h1-h6的标题元素。示例:$(":header")
Title
- 我是li1
- 我是li2
- 我是li3
- 我是li4
- 我是li5
- 我是li6
我是h1
我是h2
我是h3
我是h4
我是h5
我是h6
16. 子元素过滤选择器
- :nth-child(index/even/odd/equation):
- 匹配选中元素是父元素的第(index)/基数/偶数/3n个元素。
- :nth-child 从 1 开始的,而:eq()是从 0 算起的!
- :eq(index) 只匹配一个元素,而这个将为每一个父元素匹配子元素。
- 示例:$("ul li:nth-child(3n+2)")
- :nth-last-child(index/even/odd/equation):
- 匹配选中元素是父元素的倒数第(index))/基数/偶数/3n个元素。
- 示例:$("ul li :nth-last-child(2)")
- :first-child :
- 匹配选中元素是父元素的第一个子元素。
- 示例:$("ul li:first-child")
- :last-child :
- 匹配选中元素是父元素的最后一个子元素。
- 示例:$("ul li:last-child")
- :only-child :
- 匹配选中元素是父元素的唯一子元素,如当前元素有兄弟节点,将被过滤掉。
- 示例:$("ul li :only-child")
Title
- li1-1
- li1-2
- li1-3
- li1-4
- li1-5
- li1-1
- li1-2
- li1-3
- li1-4
- li1-1
17. 内容过滤选择器
在已经选择的对象中根据它所包含的子元素和文本内容进行过滤。
- :contains(text):
- 选择所有包含指定文本的元素。
- text: 用来查找的一个文本字符串。这是区分大小写的。
- 示例:$("div:contains('str')")
- :empty :
- 匹配所有不包含子元素或者文本的空元素。(包括文本节点)
- 示例:$("td:empty")??返回值??集合元素
- :has(selector):
- 在已经筛选的元素中根据selector在进行筛选,只有符合:之前以及has中定义的选择器规则,元素才能被选择。
- 示例:如果表达式
$('div:has(p)')匹配一个,那么应有一个存在于后代元素中的任何地方,不是直接的子元素也可以。- :parent:
- 选择所有含有子元素或者文本的父级元素。与empty相对。
- 示例:$("td:parent")??返回值??集合元素
Title - 路飞男
- 索隆男
- 娜美女
- 乌索普男
山治男
乔巴男 罗宾女 弗兰奇男
布鲁克男
18. 可见性过滤选择器
是根据元素的可见和不可见状态来选择相应的元素
- :hidden:匹配所有的不可见元素,或者 type 为 hidden 的元素。
- 示例:$("input:hidden")
- :visible: 匹配所有的可见元素。
- 示例:$("input:visible")??返回值???集合元素
- 元素的
visibility: hidden或opacity: 0被认为是可见的,因为他们仍然占用空间布局。
Title 罗杰 19. 总结
- 语法:$("选择器").action()
- 互转
- dom->jquery:$(dom 对象)
- jquery->dom:
- jquery 对象[index]
- jquery 对象.get(index)
- 选择器
- 语法:$("选择器表达式")
- 基本选择器
- id:$("#id")
- 类:$(".类名")
- 元素:$("元素名")
- 组合选择器:$("选择器 1,选择器 2,选择器 3,...")
- 属性选择器
- [id]
- [属性=值]
- [属性!=值]
- [属性^=值]
- [属性$=值]
- [属性*=值]
- [属性=值][属性=值][属性=值]
- 层次选择器
- 后代:$("parent child")
- 子:$("parent>child")
- 相邻的下一个:$("prev+next")
- prev~siblings:匹配prev元素之后的所有siblings元素
20. 表单类型过滤器
- :input:匹配input, textarea,select和 button元素。
- :text:匹配所有的单行文本框。
- :password:匹配所有密码框。
- :radio:匹配所有单选按钮。
- :checkbox:匹配所有复选框。
- :submit:匹配所有提交按钮。
- :image:匹配所有图像域。
Title 21. 表单状态过滤器
状态过滤器:根据表单元素当前状态进行过滤的选择器??
:disabled选择器、:enabled选择器- 仅可用于选择支持
disabled属性(attribute)的HTML元素(,,,,, 和)。
- 仅可用于选择支持
- :enabled:匹配所有input中不带有disabled="disabled"的元素。
- 示例:$("input:enabled")
- :disabled:匹配所有不可用元素。与enabled相反。
- 示例:$("input:disabled")??返回值?集合元素
- :checked:匹配所有选中的被选中元素(复选框、单选框等,不包括select中的option)。
- 示例:$("input:checked")
- :selected:匹配所有选中的option元素。
- 示例:$("select option:selected")
:selected选择器只为适用于为元素。
Title
22. 创建 DOM 元素
使用 jQuery 的工厂函数 $(html); 会根据传入的 html 标记字符串创建一个 jQuery的DOM对象并返回。
注意:- 动态创建的新元素节点不会被自动添加到文档中, 而是需要使用其他方法将其插入到文档中。
- 例如:append();
- 当创建单个元素时, 需注意闭合标签和使用标准的 XHTML 格式。
- 例如:创建一个
元素, 可以使用 $("
") 或 $("")
- 例如:创建一个
Title
23.DOM 插入现有元素内
将指定的或新创建的 jQuery 的 dom 对象插入到指定位置上。
按照插入方式的不同,可分为插入到某元素内作为该元素的子节点方式;
- parent.append(child):
- 向父元素(parent)加入子元素(child),插入后子元素为父元素的最后一个孩子。
- child.appendTo(parent):
- 将子元素(child)插入到父元素(parent)下,插入后子元素为父元素的最后一个孩子。
- 与 append 调用方式相反,功能相同。
- parent.prepend(child):
- 向父元素(parent)加入子元素(child),插入后子元素为父元素的第一个孩子
- child.prependTo(parent):
- 将子元素(child)插入到父元素(parent)下,插入后子元素为父元素的第一个孩子。
- 与 prepend 调用方式相反,功能相同。
- 注意:parent、child 一般的使用场景都是 jQuery 的 dom 对象。
- .html():
- 获取集合中第一个匹配元素的HTML内容 设置每一个匹配元素的html内容。
- .text():
- 得到匹配元素集合中每个元素的合并文本,包括他们的后代设置匹配元素集合中每个元素的文本内容为指定的文本内容。
Title
TestParagraph.
Thisdoes nothing.
24.DOM 插入现有元素外作该元素的兄弟节点
- brother.after(content) :
- 在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点。
- brother.before(content):
- 根据参数设定,在匹配元素的前面插入内容。
- obj.insertAfter(target):
- 将目标对象(obj)在插入到某个兄弟节点(brother)之后。
- obj.insertBefore(target) :
- 将目标对象(obj)在插入到某个兄弟节点(brother)之前。
- 注意:brother、obj 一般的使用场景都是 jQuery 的 dom 对象。
Title 我是p1
我是p2
25. 课堂练习
下拉框练习要求:
- 目标下拉框如果有选中值,则被选框的选中值插入到目标下拉框的第一个选中值下方。
?
筛选条件
26. 删除 DOM 元素的方式
- obj.detach()
- 从 jQuery 对象(obj)中删除所有匹配选择器(selector)的元素。
- 类型: Selector 一个选择表达式将需要移除的元素从匹配的元素中过滤出来。
- 示例:$("p").detach(".hello");
- obj.empty()
- 递归删除 obj (jQuery 对象)的全部子节点。不删除自己。
- 这个方法不仅移除子元素(和其他后代元素),同样移除元素里的文本。因为,根据说明,元素里任何文本字符串都被看做是该元素的子节点。
- 示例: $("#outerDiv").empty();
- obj.remove()
- 删除 obj (jQuery 对象)以及该对象全部子节点、节点绑定的事件、jQuery数据。
- 类型: String 一个选择器表达式用来过滤将被移除的匹配元素集合。
- 示例: $("#topDiv>p").remove();
- obj.unwrap()
- 将匹配元素集合(jQuery 对象)的父级元素删除,保留自身(和兄弟元素,如果存在)在原来的位置。
- 示例: $("#topDiv").unwrap();这个方法将移出元素的父元素。
- 这能快速取消 .wrap()方法的效果。
- 匹配的元素(以及他们的同辈元素)会在 DOM 结构上替换他们的父元素。
Title 我是p1
我是p2
我是div的文本我是div的p
我是div的a
27. DOM 插入并包裹现有内容
- .wrap()?
- 在每个匹配的元素外层包上一个html元素。
- 类型: String, Selector, Element, jQuery 一个HTML片段,选择表达式,jQuery对象,或者DOM元素,用来包在匹配元素的外层。
- .wrapAll()
- 在所有匹配元素外面包一层HTML结构。
- 类型: String, Selector, Element, jQuery 用来包在外面的HTML片段,选择表达式,jQuery对象或者DOM元素。
- .wrapInner()??
- 在匹配元素里的内容外包一层结构。
- 类型: String 用来包在匹配元素的内容外面的HTML片段,选择表达式,jQuery对象或者DOM元素。
- .unwrap()??
- 将匹配元素集合的父级元素删除,保留自身(和兄弟元素,如果存在)在原来的位置。
.wrap()、.wrapAll()、.wrapInner()函数可以接受任何字符串或对象,可以传递给$()工厂函数来指定一个DOM结构。这种结构可以嵌套多层,但是最内层只能有一个元素。所有匹配元素将会被当作是一个整体,在这个整体的外部用指定的 HTML 结构进行包裹。
p1
p2
p3
wrap wrapAll wrapInner
28. 复制元素(克隆)
- .clone( [withDataAndEvents ] )
- 创建一个匹配的元素集合的深度拷贝副本。
- 类型: Boolean 一个Boolean值,表示是否会复制元素上的事件处理函数。
- 从jQuery 1.4开始,元素数据也会被复制。
SEVENTEEN CARAT
29.DOM 替换
- obj.replaceAll(target):
- 用集合的匹配元素替换每个目标元素。
- 类型: Selector 一个选择器字符串,jQuery对象,DOM元素,或者元素数组,包含哪个元素被替换。
- obj.replaceWith(newContent):
- 用提供的内容替换集合中所有匹配的元素并且返回被删除元素的集合。
- 类型: String, Element, jQuery 用来插入的内容,可能是HTML字符串,DOM元素,或者jQuery对象。
.replaceAll()和.replaceWith()和功能一样,但是目标和源相反。
p1
p2
p3
总结
- 表单类型过滤器
- :input input textarea select button
- :text 单行文本框
- :password 密码框
- :radio 单选框
- :checkbox 复选框
- :submit 提交按钮
- :image 图像域
- 表单状态过滤器
- :enabled 可用的
- :disabled 禁用的
- :checked 被选中的
- :selected 下拉框被选择的
- 内部插入
- parent.append(obj);
- obj.appendTo(parent);
- parent.prepend(obj);
- obj.prependTo(parent);
- 外部插入
- brother.after(obj);
- obj.insertAfter(brother);
- brother.before(obj);
- obj.insertBefore(brother);
- Jquery 操作 dom 元素
- obj.detach(‘selector’):从 jQuery 对象(obj)中删除所有匹配选择器(selector)的元素。
示例:$("p").detach(".hello"); - obj.remove()
删除 obj (jQuery 对象)以及该对象全部子节点、节点绑定的事件、数据 - obj.empty():
递归删除 obj (jQuery 对象)的全部子节点。不删除自己. 示例: $("#outerDiv").empty(); - obj.unwrap()
删除 obj (jQuery 对象)的父元素,保留自身以及兄弟节点。
示例: $("#topDiv").unwrap();
这个方法将移出元素的父元素。这能快速取消 .wrap()方法的效果。匹配的元素(以及他们的同辈元素)会在 DOM 结构上替换他们的父元素。
- obj.detach(‘selector’):从 jQuery 对象(obj)中删除所有匹配选择器(selector)的元素。
- 包裹
- wrap(html|element|fn)
把所有匹配的每个元素用其他元素的结构化标记包裹起来。 - wrapAll
将所有匹配的元素用单个元素包裹起来 - wrapInner(htm|element|fnl)
将每一个匹配的元素的子内容(包括文本节点)用一个 HTML 结构包裹起来
- wrap(html|element|fn)
- dom 元素的克隆
clone([Even[,deepEven]])
创建一个指定的元素集合完全相同的副本。完全相同泛指数据相同,副本指内存地址不同 - 替换
obj.replaceAll(‘selector’/dom):使用 obj 替换 dom 对象或 selector 筛选的 dom 对象。
(jQuery 的参数建议使用 dom 对象传递)。替换后 obj 被 clone,分别替换目标元素。
obj.replaceWith(‘selector’/dom):与 replaceAll 调用方式相反。
30. 属性
属性操作:获取或设定DOM元素的属性值。例如: type为属性。
- obj.attr('proName', ' value'):
- 设定或获取目标对象(obj)的属性。
- $('#img').attr( 'src', '1.png');设定src属性为1.png。
- $ ('#img').attr('src');获取src属性值。
- 注意事项:如果当前元素没有设定某属性,浏览器会默认给这个元素加上默认值。
- 例如checkbox的checked属性默认为false,但是使用attr只能返回undefined。
- obj.prop('proName','value'):
- 设定或获取目标对象(obj)的属性。
- 与attr使用方式完全一样,但可以获取没有声明的属性值。
- obj.val():
- 设置或获取表单类型的元素的value值。
- 等同于obj.prop ("value","propValue") ;
30.1. 课堂案例
使用 prop 设计 table 里的 tr 有 checkbox
全选/全不选 复选框 序号 姓名 年龄 复选框1 1 路飞 19 复选框2 2 索隆 21 复选框3 3 山治 21 全选/全不选 序号 姓名 年龄 1 路飞 19 2 索隆 21 3 山治 21 31. class 操作:
修改目标元素所使用的样式类。
- obj.addClass(className):
- 示例:$("p").addClass("font");//font 为样式类名
- 类型: String 为每个匹配元素所要增加的一个或多个样式名。
- obj.hasClass(className):
- 示例:var boolean =$("p").hasClass("font");
- 类型: String 要查询的样式名。
- 判断目标元素是否使用指定样式,返回值 boolean。
- obj.removeClass([className]):
- 示例:$("p").removeClass("font");
- 类型: String 每个匹配元素移除的一个或多个用空格隔开的样式名。
- 删除目标元素对样式类(className)的使用。
- obj.toggleClass(className):
- 在匹配的元素集合中的每个元素上添加或删除一个或多个样式类,取决于这个样式类是否存在或值切换属性。
- 即:如果存在(不存在)就删除(添加)一个类。
- 类型: String 在匹配的元素集合中的每个元素上用来切换的一个或多个(用空格隔开)样式类名。
Title 你好
32. CSS属性-.CSS()
不通过设定样式类而直接修改样式的方式。
- obj.css('styleName'):
- 获取目标样式的取值。
- 示例:$('#div').css("font-size")
- obj.css('styleName','styleValue'):
- 设定目标元素样式的值为指定值:
- 示例:$('#div').css('color','red');
- obj.css({'styleName','styleValue',..}):
- 批量设定目标元素的样式值。
- 示例:$('#div').css({color:'red','background-color':'yellow'});
p 标签 1
p 标签 2
33. CSS属性-查询当前元素的大小以及位置
- .width():返回: Integer
- 为匹配的元素集合中获取第一个元素的当前计算宽度值。
- .height():高度值。
- .innerWidth():
- 为匹配的元素集合中获取第一个元素的当前计算宽度值,包括padding,但是不包括border。
- .innerHeight():高度值。
- .outerWidth( [includeMargin ] ):
- 获取元素集合中第一个元素的当前计算宽度值,包括padding,border和选择性的margin。(注:返回一个整数(不包含“px”)表示的值,或如果在一个空集合上调用该方法,则会返回 null。)
- .outerHeight( [includeMargin ] ):高度值。
- offset():返回: Object
- 在匹配的元素集合中,获取的第一个元素的当前坐标,坐标相对于文档。
- .offset( coordinates ):返回: jQuery
- 设置匹配的元素集合中每一个元素的坐标, 坐标相对于文档。
-
类型: PlainObject
一个包含
top和left属性的对象,用整数指明元素的新顶部和左边坐标。
- .position():返回: Object
- 获取匹配元素中第一个元素的当前坐标,相对于offset parent的坐标。
- (offset parent指离该元素最近的而且被定位过的祖先元素 )
- 注意:
- .position()方法可以取得元素相对于父元素的偏移位置。
- .offset()是获得该元素相对于documet的当前坐标。
- 当把一个新元素放在同一个容器里面另一个元素附近时,用.position()更好用。
- .position()返回一个包含 top 和 left属性的对象。
- jQuery不支持获取隐藏元素的偏移坐标及所占用的边框,边距和填充的大小。
Title 你好34. jQuery 对于文本内容的封装。
- .html():
- 获取集合中第一个匹配元素的HTML内容 设置每一个匹配元素的html内容。
- .text():
- 得到匹配元素集合中每个元素的合并文本,包括他们的后代设置匹配元素集合中每个元素的文本内容为指定的文本内容。
- obj.html():读取和设置某个元素中的 HTML 内容,与 dom 中的 innerHTML 类似。取得第一个匹配元素的 html 内容。
var result=$("p").html(); console.log(result); $("p").html("关羽") - obj.text():读取和设置某个元素中的文本内容,与 dom 中的 innerText 类似。
var result=$("p").text(); console.log(result); $("p").text("关羽")
35.绑定事件处理器 - on()
- on 方法绑定事件和处理函数
- .on( events [, selector ] [, data ], handler(eventObject) )
- 返回: jQuery
- 描述: 在选定的元素上绑定一个或多个事件处理函数。
- $('outerSelector').on( events [, selector ] [, data ], handler(eventObject) )
- outerSelector:外层区域选择器。
- events
- 类型: String
- 一个或多个空格分隔的事件类型和可选的命名空间,或仅仅是命名空间.
- 比如"click", "keydown.myPlugin", 或者 ".myPlugin"。
- selector
- 类型: String
- 内部元素选择器(缺省为外部选择器)
- 一个选择器字符串,用于过滤出被选中的元素中能触发事件的后代元素。如果选择器是
null或者忽略了该选择器,那么被选中的元素总是能触发事件。
- data
- 类型: Anything:传递给执行函数的参数,封装在 event.data 中。json 类型。
- 当一个事件被触发时,要传递给事件处理函数的
event.data。
- handler(eventObject)
- 类型: Function():事件处理函数
- 事件被触发时,执行的函数。若该函数只是要执行
return false的话,那么该参数位置可以直接简写成false。
Title 娜美
罗宾
乔巴
36. off 方法使用
- off 方法解除事件和处理函数
- .off( events [, selector ] [, handler(eventObject) ] )
- 返回: jQuery
- 描述: 移除一个事件处理函数。
- $(‘outerSelector’).off( events [, selector ] [, handler(eventObject) ] )
- outerSelector:外层区域选择器。
- events
- 类型: String
- 一个或多个空格分隔的事件类型和可选的命名空间,或仅仅是命名空间,比如"click", "keydown.myPlugin", 或者 ".myPlugin"。
- selector
- 类型: String
- 内部元素选择器(缺省外部选择器)
- 一个选择器,当绑定事件处理程序时最初传递给
.on()的那个。
- handler(eventObject)
- 类型: Function() :需要解除的事件处理函数。
- 事件处理程序函数以前附加事件上,或特殊值
false
Title 娜美
罗宾
乔巴
37. 特殊事件绑定方式(简写)
为了编写方便,jQuery 定义了特殊事件绑定函数来绑定事件。
- $('button').click(function() {});
?? 等价
- $('button').on('click',function() {});
特殊事件绑定的方式为:
- $('selector').eventType(data,function() {});
- selector:选择器。
- eventType:函数名,但直接对应事件类型(注意省略 on)。
- data:传递给执行函数的参数,封装在 event.data 中。json 类型。
$("p").click(function(){ console.log($(this).text()); })38. 按照事件分类
- 事件
- 浏览器事件
- 文档加载
- 绑定事件处理器
- 事件对象
- 表单事件
- 键盘事件
- 鼠标事件
39. 浏览器事件
39.1. resize
用于窗口对象(window),当窗口大小发生变化时调用。
Title 39.2. scroll
用于窗口、iframe、div 等可能出现滚动条的对象。当使用鼠标滚轮滚动时调用。
Title 40.onload 与ready
- window.onload 和 body.onload 为同一事件绑定方式,同时绑定时只调用一个。
- 唯一的区别是:
- 可以在 body 标签上声明处理函数。
- 例如这两个事件对应的是整个文档(包含文档上的 css、js、html、图片信息)加载完成后调用。
- 只能写一次。
Title 我是div
- document.ready:
- 当 html 文档解析后就调用事件处理函数。图片、css 等此时有可能没有加载,不兼容。
- 文档加载事件函数:
- load(已弃用):用于 window、图片等。在文档或图片加载完成后执行处理函数。
- ready:用于 document 对象,当文档加载后执行处理函数
- 相当于 document.onload.可以写多次
- --举例:$(document).ready(fun1);
- --缩写:$(fun1);
- unload(已弃用):用于 window 对象。在文档关闭前执行处理函数
Title 我是div
41. 表单事件函数:
- eventData
- 类型: Object
- 一个对象,它包含的数据键值对映射将被传递给事件处理程序。
- handler(eventObject)
- 类型: Function()
- 每次事件触发时会执行的函数。
- 返回: jQuery
41.1. focus
当元素获得焦点时触发目标函数,不支持冒泡;
- .focus()
- 为 JavaScript 的 "focus" 事件绑定一个处理函数,或者触发元素上的 "focus" 事件。
41.2. focusin
-
.focusin()
focusin事件会在元素(或者其内部的任何元素)获得焦点时触发。- 跟 focus 事件的显著区别在于
- focusin可以在父元素上检测子元素获得焦点的情况
- (换而言之,它支持事件冒泡)。
41.3. blur
-
.blur()
- 一个元素失去焦点将触发
blur事件。 -
为 "blur" 事件绑定一个处理函数,或者触发元素上的 "blur" 事件(注:此事件不支持冒泡)。
- 一个元素失去焦点将触发
41.4. focusout
-
.focusout()
- 将一个事件函数绑定到"focusout" 事件。
focusout事件会在元素(或者其内部的任何元素)失去焦点时触发。- 跟 blur 事件的显著区别在于
- 它可以在父元素上检测子元素失去焦点的情况
- (换而言之,它支持事件冒泡)。
Title
41.5. change
-
.change()
- 一个元素的值改变的时候将触发
change事件。 -
为JavaScript 的 "change" 事件绑定一个处理函数,或者触发元素上的 "change" 事件。
- 一个元素的值改变的时候将触发
41.5.1. js / jQuery写法
当下拉框、单选框,文本框的值发生变化时调用
41.5.2. 文本框的 change,验证
案例1:
案例2:
用户名:
41.5.3. submit
- 当表单提交时触发,return false 提交失败 ; return true 提交成功。
- .submit()
- 当用户试图提交表单时,就会在这个表单元素上触发
submit事件。它只能绑定在元素上。 - 以下几种情况会导致表单被提交:
- 用户点击了
, - 或者
- 或者当某些表单元素获取焦点时,敲击Enter(回车键)
- 用户点击了
Title 42、事件对象event
- event.currentTarget
- 返回: Element
- 描述: 在事件冒泡过程中的当前DOM元素。
- 获取绑定事件的 DOM 元素,相当于this。
- event.data
- 返回: Object
- 描述: 当前正在执行的处理程序绑定时,一个可选的数据对象传递给一个事件方法。
- 传递给执行函数的参数,拿到参数:event.data.参数名。
- 其他 事件对象 用法
Title 我是p1
43、树遍历
通过某一个 dom 对象的父子、兄弟之间的关系检索对象
- .children(‘selector’)
获得当前元素的全部直接子元素(集合),可以在参数中使用选择器过滤。 - .find(‘selector’)
获得当前元素的全部后代元素,可以在参数中使用选择器过滤。 - .next()
获得当前元素的下一个兄弟元素。 - .nextAll()
获得当前元素之后的全部兄弟元素。 - .parent()
获得当前元素的直接父元素。 - .parents()
获得当前元素的所有父元素。
Title 我是p1
我是span我是div span1 我是div span2我是p2
我是p3
/div>44、特效
- duration (默认:
400)- 类型: Number or String ; 一个字符串或者数字决定动画将运行多久。
- 持续时间(duration)是以毫秒为单位的,数值越大,动画越慢,不是越快。
- 字符串
'fast'和'slow'分别代表200和600毫秒的延时。 - 如果提供任何其他字符串,或者这个duration参数被省略,则默认使用
400毫秒的延时。
- complete
- 类型: Function() ; 在动画完成时执行的函数。
- 返回: jQuery 。
44.1.基本特效
-
.hide( )
- 隐藏匹配的元素。
-
.show()
- 显示匹配的元素。
-
.toggle()
- 显示/隐藏匹配的元素。
Title 
44.2.渐变
这些方法用于调整元素的透明度。
fadeIn()
- 通过淡入的方式显示匹配元素。
fadeOut()
- 通过淡出的方式显示匹配元素。
fadeTo()
- 调整匹配元素的透明度。
fadeToggle()
- 通过匹配的元素的不透明度动画,来显示或隐藏它们。
Title 
44.3滑动
slideDown()
- 用滑动动画显示一个匹配元素。
slideUp()
- 用滑动动画隐藏一个匹配元素。
slideToggle()
- 用滑动动画显示或隐藏一个匹配元素。
Title 
45、Ajax
jQuery 库支持完整的 Ajax 操作。这里所包含的所有函数和方法用于从服务端加载数据,并且不会导致页面刷新。
45.1.底层接口 jQuery.ajax()
- jQuery.ajax( url [, settings ] )
- 返回: jqXHR
- 说明: 执行一个异步的HTTP(Ajax)的请求。
- url:一个用来包含发送请求的URL字符串String。
- settings:一个以"{键:值}"组成的AJAX 请求设置。所有选项都是可选的。
Title 45.1.1. 课堂练习
1、user.json:内容数组??
[{"username":"zs","age": 22,"password": "123"},{"username":"lisi","age":23,"password": "567"},{"username":"zhaoliu","age": 21,"password": "678"}]2、发ajax取得数组数据
3、循环遍历数组得到每一项放到表格中去。
??(1)html页面写一个table,给定th:用户名 年龄 密码
??(2)按钮 点击发送ajax请求
??(3)回调函数得到数组数据,循环遍历数组得到每一项组成tr td,把他追加到(append)表格中去。
用户名 密码 年龄
45.1.2. 跨域使用json
jquery 解决跨域:jsonp
1. 服务端返回包 json 的格式:callback(json 串)
2. 客户端:用下面的格式发送 ajax 的请求45.2. 快捷方法
45.2.1. jQuery.get() ; jQuery.post()
- jQuery.get() / post() :使用一个HTTP GET / POST 请求从服务器加载数据。
- jQuery.get / post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )
Title 45.2.2. jQuery.getJSON()
使用一个HTTP GET请求从服务器加载JSON编码的数据。
45.2.3 jQuery.load()
从服务器载入数据并且将返回的 HTML 代码并插入至 匹配的元素 中。
45.2.4 jQuery.getScript()
使用一个HTTP GET请求从服务器加载并执行一个 JavaScript 文件
45.3. 辅助函数
.serializeArray()
将用作提交的表单元素的值编译成拥有name和value对象组成的数组。例如[ { name: a value: 1 }, { name: b value: 2 },...]
46、杂项
46.1. 集合操作
46.1.1 .each()
遍历一个jQuery对象,为每个匹配元素执行一个函数。
Title - 我是li1
- 我是li2
- 我是li3
46.1.2 .jQuery.param()
创建一个数组或对象序列化的的字符串,适用于一个URL 地址查询字符串或Ajax请求。
47、通用属性操作
案例见13、属性选择器
-
.attr()
- 获取匹配的元素集合中的第一个元素的属性的值。设置每一个匹配元素的一个或多个属性。
-
.prop()
- 获取匹配的元素集中第一个元素的属性(property)值为匹配的元素设置一个或多个属性(properties)。
-
.removeAttr()
- 为匹配的元素集合中的每个元素中移除一个属性(attribute)。
-
.removeProp()
- 为集合中匹配的元素删除一个属性(property)。
-
.val()
-
.val()方法主要用于获取表单元素的值,比如input,select和textarea。 - 对于
元素,.val()方法返回一个包含每个选择项的数组,如果没有选择性被选中,它返回null。 - 对于选择框和复选框,您也可以使用:selected 和 :checked选择器来获取值。
-
- :parent: