jQuery 入门 demo
jQurey 概述
jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。
基础语法是:$(selector).action()
美元符号定义 jQuery ($ 表示一个函数 function(selector,context))选择符(selector)“查询”和“查找” HTML 元素,这里差找结束之后,会返回一个元素的 jQuery 对象。jQuery 的 action() 执行对元素的操作。
传入 $() 的参数
传入函数
会等待页面加载完成之后,执行传入的函数的内容。等价于 window.onload=function() {}
1 |
|
HTML 字符串
会为我们创建这个 html 元素的 Object 对象,然后我们就可以对其进行操作。
1 |
|
选择器字符串
会根据传入的选择器字符串返回元素 jQuery 对象,然后随意调用。可以参看关于 jQuery 选择器的文档。
1 |
|
DOM 对象
DOM 对象即 HTML 对象,使用 alert() 返回的结果为 Object HTML标签名Element
。
而 jQuery 使用 alert() 返回的是 Object Object
,向 jQuery 的 $ 函数传入 DOM 对象返回的是一个 jQuery 对象。
jQuery 的本质是 DOM 对象的数组 + jQuery 提供的一系列函数,可以使用增强 for 循环遍历。而两者自己特有的函数是不能被对方使用的。
而 jQuery 对象和 DOM 对象之间是可以相互转化的,DOM -> jQuery 使用 $(DOM) 转化为 jQuery 对象。jQuery -> DOM 使用 jQuery[0] 返回 DOM 对象。
DOM jQuery JS 对象异同和联系
下面是关于 DOM 对象 jQuery 对象 JS 对象三者之间的异同和关系:
Dom对象
文档对象模型简称 DOM ,是 W3C 组织推荐的处理可扩展置标语言的标准编程接口。
DOM 实际上是以面向对象方式描述的文档模型。DOM 定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。
通过 DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。
DOM 独立于平台和编程语言。它可被任何编程语言诸如 Java、JavaScript 和 VBScript 使用。
DOM 对象,即是我们用传统的方法 (JavaScript) 获得的对象。
DOM 准确说是对文档对象的一种规范标准(文档对象模型),标准只定义了属性和方法行为。
JavaScript对象
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
对象只是带有属性和方法的特殊数据类型。
通过 js 获取的 DOM 对象就是 js 对象
当浏览器支持 js 的 DOM 接口 (api) 时,这里狭义的dom对象是以 js 对象的形式出现的,也就是一个 js 对象。
jQuery对象
jQuery 对象其实是一个 JavaScript 的数组,这个数组对象包含 125 个方法和 4 个属性 4 个属性分别是:
- jquery 当前的 jquery 框架版本号
- length 指示该数组对象的元素个数
- context 一般情况下都是指向 HtmlDocument 对象
- selector 传递进来的选择器内容
jquery 对象就是通过 jQuery 包装 DOM 对象后产生的对象。jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法;反过来 DOM 对象也不能使用jquery的方法。
jQuery对象和js对象区别
- jQuery 对象属于 js 的数组
- jQuery 对象是通过 jQuery 包装的 DOM 对象后产生的
- jQuery 对象不能使用 DOM 对象的方法和属性
- DOM 对象不能使用 jQuery 对象的方法和属性
jQuery 对象和 DOM 对象之间的转化
jQuery 对象使用下标 [0] 转化为 DOM
DOM 使用 $() 函数返回 jQuery 对象。
总结一下
DOM 对象才能使用 DOM 中的方法,jQuery 对象不可以使用 DOM 中的方法,但 jQuery 对象提供了一套更加完善的工具用于操作 DOM 。
平时用到的 jQuery 对象都是通过 $() 函数制造出来的,$() 函数就是一个 jQuery 对象的制造工厂。
注意:如果获取的对象是 jQuery 对象,那么在变量前面加上 $ ,这样方便容易识别出哪些是 jQuery 对象。
选择器
具体的所有选择器,可以查看手册:jQuery 选择器手册
选择器组合
多重叠加选择器 $(“选择器1 选择器2 选择器3”…),可以写多个选择器/过滤器,作用效果为 &&,会返回满足每个选择器的元素。
多重平行选择器: $(“选择器1,选择器2…”),可以写多个选择器,作用效果为 || ,会返回每个选择器满足的元素,注意和上面的不同为多了逗号。
基本选择器
ID 选择器:$(“#ID名称”),只需要对应标签设值的属性 id 的值前面加上 # 即可。
类选择器: $(“.Class名称”),只需要在对应标签设置的属性 class 的值前面加上 . 即可。
元素选择器: $(“标签名称),只需要写对应标签的名称即可,如 $(“div”)
所有选择器: $(),只需要写 \ 就可以表示所有的标签。
层级选择器
祖先选择器:$(‘ancestor ancestor … son’) 格式,每一个都是独立的选择器,为 ancestor 为祖先标签(不需要是严格的上一级)的选择器,最后的 son 为目标标签的选择器。ancestor 的数量可以任意设置,指是为了更加精确的定位到 son 身上。
子选择器:$(“father > son”) 要求 father 必须是 son 的严格上一级,才能选择到 son 身上。
相邻选择器: $(“Prev + Next”) 选择紧邻着 Prev 后面的 Next 元素,必须严格相邻。
之后选择器:$(“Prev ~ last”) 选择 prev 之后的同辈 last 元素,不需要严格相邻。
属性过滤选择器
过滤选择器,可以跟在一个选择器后面,将这个选择器选择出来的结果进行按照设定要求过滤,只留下来符合要求的。
也可以单独作为一个选择器来按照自己的设定选择。
$([属性名]) 选择拥有此属性的元素,如 $(“div[id]”) 选择出来拥有 id 属性的 div 标签。
$([属性名=属性值]) 选择有特定属性名和属性值的元素。
$([属性名!=属性值]) 选择 属性名!=属性值 的元素。
$([属性名^=属性值开头]) 选择属性值以此属性值开头的元素,和正则相同。
$([属性名$=属性值结尾]) 选择属性值以此属性值结尾的元素,和正则相同。
$([属性名*=被包含属性值]) 选择属性值中包含此属性值的元素,和正则相同就怪了。
$([属性选择器1][属性选择器2][属性选择器3]…) 多个属性叠加在一起,多次选择过滤。
基本过滤器
:first 选择元素集合中的第一个。
:last 选择元素集合中的最后一个。
:even 从零开始选择偶数的元素。
:odd 从零开始选择奇数的元素。
:eq(index) 从零开始,匹配一个给定索引值的元素
:gt(index) 匹配比索引值大的元素。
:lt(index) 匹配比索引值小的元素。
内容过滤器
:contains(text) 匹配标签文本内容包含有 text 的标签元素。
:empty 匹配标签里面没有子标签和文本的元素
:has(selector) 选择拥有 selector 能匹配到标签的父标签,满足 has 关系。
:parent 选择里面的有子标签或者文本的标签、
可见性过滤器
:hidden 选择其中被隐藏的
:visible 选择其中可以被看见的
子元素过滤器
:first-child 选择所有父标签符合要求的的第一个子标签,而 :first 是选择符合要求的标签里面的第一个。
:last-child 和上面同理,不过是最后一个子标签。
:nth-child(index) 为所有父标签匹配第 index 个子标签。
:only-child 只匹配没有同级姐妹标签的单独标签。
表单过滤器
:enabled 选择拥有表单属性 enabled 的元素。
:disabled 选择拥有表单属性 disabled 的元素。
:checked 选择拥有表单属性 checked 的元素。
:selected 选择拥有表单属性 selected 的元素。
jQuery 属性操作
html()
jQuery.html() 返回此标签 jQuery 对象的内容,修改里面的内容则填写在括号里 jQuery.html(“Change”) 效果和 innerHTML 相似。
需要注意的是,这玩意返回的是开始结束标签里面的 所有 内容,包括里面的子 HTML 标签。
1 | <script> |
text()
jQuery.text() 基本等效与 html() 但是这个是过滤了 HTML 子标签,只会返回里面的文本。和 DOM 对象里面的 innerText 效果相似。
val()
jQuery.val() 是设置和获取表单项目的 value 值。常常用来获取表单里面输入的值,当然也可以修改里面的值:
第一读取输入框内容并修改的小 demo 。
1 | <body> |
同时 val() 选项的选择,只需要将要选择的选项 value 值放在 val(["value1","value2"...])
即可。
1 | <body> |
attr() 和 prop()
用来获取标签的属性或者修改标签的属性,获取属性值:attr(“属性名称”),设置属性值:(“属性名称”,”属性值”);
1 | <body> |
对于表单的元素来说,可能没有 checked 这个属性(我们无法预测),但是对于 attr() 来说,只要没有手动写 checked 属性,此次属性查询返回的结果都是 undefined ,所以对于表单的 checked 选项来说,无法了解是否已经选中(手动无论是否选中都是 undefined)。而 prop() 就是针对 attr() 这个缺点而生的。
prop() 可以查询没有写在标签里的 checked 属性,被选中返回 true ,没有选中返回 false。
jQuery 的增删改
appendTo() & pretendTo() 嵌入
a.appendTo(b) 将 a 元素嵌入到 b 元素中,成为 b 的最后一个子元素。
a.pretendTo(b) 将 a 元素嵌入到 b 元素中,成为 b 的第一个子元素。
insertAfter() & insertBefore() 插入
a.insertAfter(b) 将 a 元素插入到 b 元素的后面,两者同级。
a.insertBefore(b) 将 a 元素插入到 b 元素前面,两者同级。
replaceWith() & replaceAll() 替换
a.replaceWith(b) 将 b 元素替换 a 元素。
a.replaceAll(b) 将 a 元素替换 b 元素。
remove() & empty() 清楚
a.remove() 删除 a 整个标签。
a.empty() 删除 a 标签里面的内容。
jQuery 动画效果
show([speed,[callback]])
展示隐藏的元素, speed 单位毫秒,callback 动画结束激活的函数。
1 | $("#Show").click(function() { |
hide([speed,[callback]])
隐藏展示的元素, speed 单位毫秒,callback 动画结束激活的函数
1 | $("#Hide").click(function() { |
toggle([speed,[callback]])
隐藏展示的元素,展示隐藏的元素,speed 单位毫秒,callback 动画结束激活的函数
1 | $("#Toggle").click(function() { |
fadeOut([speed,[callback]])
淡出元素,speed 单位毫秒,callback 动画结束激活的函数
1 | $("#FadeOut").click(function() { |
fadeIn([speed,[callback]])
淡入元素,speed 单位毫秒,callback 动画结束激活的函数
1 | $("#FadeIn").click(function() { |
fadeToggle([speed,[callback]])
淡入淡出元素,speed 单位毫秒,callback 动画结束激活的函数
1 | $("#FadeToggle").click(function() { |
fadeTo([speed],opacity,[callback])
淡入元素到指定透明度,opacity 必须设置。speed 单位毫秒,callback 动画结束激活的函数
1 | $("#FadeTo").click(function() { |
jQuery 事件处理
常用事件
click() 绑定点击事件处理代码
mouseover() 绑定鼠标移动到元素身上处理代码
mouseout() 绑定鼠标离开元素身上处理代码
bind() 绑定多个事件对应的处理代码,所有事件名称写在一个双引号里,用空格隔开,如 bind(“click mouseover mouseout”,function(){})
unbind() 解绑对应的事件处理代码,使用的方法和上面的 bind() 差不多。
live() 动态绑定版本的 bind 即使是页面加载完成之后出现的元素,只要满足选择器,就会被绑定上设置的处理代码。
one() 一次性的 bind ,所绑定的事件处理代码只会运行一次。
事件传递
当父标签和子标签绑定了相同的一个事件的时候,比如下面父标签和子标签都绑定了 click 事件:
1 | <div> |
由于点击 div 里面的任何事物都属于点击 div ,所以当点击 button 的时候,会被记为同时点击了 div 和 button 从而弹出两个弹窗。
要阻止这种子类事件传递给父类的行为,只需要在绑定子类事件的处理函数的时候,返回 false 就会停止标签的默认行为:传递事件给父标签。
获取事件
其实对于我们操作引起的一个事件,也同样是一个对象,想要获取到这个对象的话,只需要将变量名放在事件绑定函数的参数括号里面即可。
1 | $(function() { |
上面的 event 变量保存的就是我们获取到的点击事件的对象,从控制台可以看到这个对象里面保存的信息。
1 | jQuery.Event |