1. 引入方式
<!-- 1.引入cdn进行使用 -->
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<!-- 2.引入本地 -->
<script src="./JS/jq.js"></script>
2. jQuery的入口函数
2.1 书写方式
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">/*方式1 */</span>
<span style="color:#000000">$</span>(<span style="color:#000000">document</span>).<span style="color:#000000">ready</span>(<span style="color:#770088">function</span>() {
});
<span style="color:#aa5500">//等价于上面的代码</span>
<span style="color:#aa5500">/*方式2 */</span>
<span style="color:#000000">$</span>(<span style="color:#770088">function</span>() {
});</span></span>
3.2 ready方法和onload方法的区别
window.onload 当页面静态资源文件加载完毕时在执行函数体内的代码
① 多个事件后者会覆盖前者②必须等待内容及资源加载完毕执行
window.onload = function () {
var box = document.querySelector('.box');
console.log(box);
}
ready:①使用多次不会被覆盖② 等DOM加载完毕之后直接执行
$(window).ready(function () {
console.log($('.box'));
})
4. 选择器
4.1 基础选择器(重点)
选择器 | 示例 | 说明 |
---|---|---|
全局选择器 | $('*') | 选择所有元素 |
标签选择器 | $('p') | 选择所有的p 元素 |
ID选择器 | $('#top') | 选择所有id 属性值为top 的元素 |
Class选择 | $('.box') | 选择所有class 属性值中包含box 类名的元素 |
-
注意: 隐式迭代:就是自动把匹配的所有元素内部进行遍历循环,给每一个元素添加方法.
4.2 按层次结构查找元素(匹配选择器)(重点)
通过样式名称来查找元素确实很方便,但是我们通常不需要查询整个页面来查找元素。有时可能只需要查找某个元素的子元素。
选择器 | 示例 | 说明 |
---|---|---|
多重选择器 | $('div, p') | 选择所有的div 元素和p 元素(相当于css的并集选择器) |
子代选择器 | $('div > p') | 选择作为div 元素子元素的所有p 元素 |
后代选择器 | $('div p') | 选择作为div 后代的所有p 元素 |
相邻选择器(同级兄弟) | $('div + p') | 选择紧邻div 元素且位于其后的p 元素 |
兄弟选择器 | $('div ~ p') | 选择作为div 元素且位于其后的所有p 元素 |
4.3 使用属性选择元素
选择器 | 示例 | 说明 |
---|---|---|
tag[attr] | $('p[class]') | 选择所有带有class 属性的p 元素 |
tag[attr="value"] | $('p[class="top"]') | 选择所有class 属性值恰好等于top 的p 元素 |
tag[attr!="value"] | $('p[class!="top"]') | 选择所有class 属性值不等于top 的p 元素 |
tag[attr1="value"][attr2="value"] | $('p[class="top"][id="con"]') | 选择所有class 属性值恰好等于top (并且)带有id 的属性值为con的p 元素 |
5. 选择过滤器
5.1 位置过滤选择器(重点)
选择器 | 描述 |
---|---|
:first | 选择上下文匹配的第一个元素。p:first 返回所有p元素中的第一个p标签 |
:last | 选择上下文匹配的最后一个元素。p:last返回所有p元素中的最后一个p标签 |
:even | 选择上下文中的偶数元素。p:even选择匹配元素集合中的偶数位的p元素 (从0开始) |
:odd | 选择上下文中的奇数元素。p:odd选择匹配元素集合中的奇数位的p元素 (从0开始) |
:eq(n) | 选择第n个匹配元素(从0开始) |
:gt(n) | 大于,选择第n个匹配元素之后的元素(排除第n个) |
:lt(n) | 小于,选择第n个匹配元素之前的元素(排除第n个) |
5.2 子元素过滤选择器
选择器 | 描述 |
---|---|
:first-child | 第一个子元素 |
:last-child | 最后一个子元素 |
:first-of-type | 匹配上下文中特定类型的第一个子元素 |
:last-of-type | 匹配上下文中特定类型的最后一个子元素 |
:nth-child(n|even|odd|Xn+Y) | 匹配从前往后计数的第n个子元素 |
:nth-of-type(n|even|odd|Xn+Y) | 匹配从前往后计数的第n个特定类型的子元素 |
5.4 选取表单元素过滤器
jQuery提供了一些专门为表单设计的选择器,用于快速访问表单元素。
选择器 | 描述 |
---|---|
:checked | 选择处于选中状态的复选框、单选框或下拉框元素(checkbox ,radio ,option ) |
:disabled | 选择处于禁用状态的元素(button, input, optgroup, option, select, textarea ) |
:selected | 选择处于被选中状态的option 元素 |
5.3 内容过滤器
选择器 | 示例 | 说明 |
---|---|---|
:contains(text) | $('div:contains("hello")') | 选择匹配元素集合中包含指定文本的所有div 元素(匹配包含给定文本的元素) |
:empty | $('div:empty') | 选择所有没有子元素的div 元素(包括文本节点) |
:parent | $('div:parent') | 选择所有非空的div 元素(匹配含有子元素或者文本的元素) |
:has(selector) | $(div:has(p)') | 选择所有包含p 元素的div 元素(匹配含有选择器所匹配的元素的元素) |
:not(selector) | $('a:not(.active)') | 选择不匹配.active 选择器的a 元素 |
7. jQuery 对象和 DOM 对象
使用 jQuery 方法和原生JS获取的元素是不一样的,总结如下 :
-
用原生 JS 获取来的对象就是 DOM 对象
-
jQuery 方法获取的元素就是 jQuery 对象。
-
jQuery 对象本质是: 利用$对DOM 对象包装后产生的对象(伪数组形式存储)。
注意:
只有 jQuery 对象才能使用 jQuery 方法,DOM 对象则使用原生的 JavaScirpt 方法。
7.1 jQuery 对象和 DOM
JQ转原生:
var p2 = $('p')[0];
console.log(p2);
原生转JQ:$(p)
8. 操作jQuery集合
8.1 确定集合大小
// 确定集合的长度
console.log($('.box h3').length);
8.2 遍历集合元素
方法 | 描述 |
---|---|
$(selector).each(function(index,element)) | 遍历集合中的所有元素 |
8.3 获取元素的索引(重点)
方法 | 描述 |
---|---|
index([element]) | 指定元素相对于其他指定元素的 index 位置,从0开始计数。,如果未找到元素,index() 将返回 -1。 |
8.4 集合转数组
方法 | 描述 |
---|---|
toArray() | 将jQuery集合转换成包含所有元素的数组。 |
8.5 过滤(方法)
方法 | 描述 |
---|---|
get([index]) | 返回集合中指定索引的元素。如果不指定索引,则返回所有的元素。 |
first() | 返回包含第一个元素的新集合。如果初始集合为空,则返回空集合。 |
last() | 返回包含最后一个元素的新集合。如果初始集合为空,则返回空集合。 |
eq(index) | 返回包含指定索引元素的新集合。参数可以为负数,表示从集合结尾开始计算。 |
filter(selector) | 创建一个集合副本,然后从新集合中删除不符合selector选择器条件的元素。 |
has(selector) | 创建并返回新的集合,只包含匹配selector选择器的子元素。 |
not(selector) | 创建不包含选择器selector参数匹配元素的新集合。 |
is(selector) | 确定集合中是否有元素匹配给定的选择器。返回是true,或者false |
slice(start, [end]) | 获取集合的子集。--还有splice方法等 |
map(callback) | 在集合中的每个元素上调callback函数,然后返回值到一个jQuery对象中。 |
8.6 根据关系获取集合(重点)
// 获取父元素
console.log($(".paragraph").parent());// 获取父元素
// 获取父元素及所有的祖先元素
console.log($(".paragraph").parents());//获取元素的所有父元素
// 获取所有子元素集合
console.log($('.container').children());//获取所有子元素
// 查找子元素的集合
console.log($('.container').find('.foo'));//获取foo元素
// 查找当前元素的上一个元素集合
console.log($('#box3').prev());//获取box3的上一个元素
// 返回前面所有兄弟元素的集合
console.log($('#box3').prevAll());//获取box3前面所有兄弟元素
// 查找当前元素的下一个元素集合
console.log($('#box3').next());//获取box3的下一个元素
// 返回后面所有兄弟元素的集合
console.log($('#box3').nextAll());//获取box3后面所有兄弟元素
// 查找当前元素的所有兄弟元素集合
console.log($('#box3').siblings());//获取box3的所有兄弟元素
方法 | 描述 |
---|---|
(selector).parent(filter) | 返回元素的直接父元素。如果设置选择器,则只会返回匹配选择器的父元素。filter可选,规定缩小搜索父元素范围的选择器表达式。 |
(selector).parents(filter) | 返回元素的祖先元素。如果设置选择器,则只会返回匹配选择器的祖先元素。filter可选,规定缩小搜索祖先元素范围的选择器表达式。 |
(selector).children(filter) | 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。如果设置选择器,则只会返回匹配选择器的子元素。<br />filter可选。规定缩小搜索子元素范围的选择器表达式。 |
(selector).find(filter)(重点) | 返回元素中匹配选择器的后代元素。<br />filter必需。过滤搜索后代条件的选择器表达式、元素或 jQuery 对象。 |
(selector).prev(filter) | 返回元素前面的直接兄弟元素。 |
(selector).prevAll(filter) | 返回元素前面的所有兄弟元素。 |
(selector).next(filter) | 返回元素后面的直接兄弟元素。 |
(selector).nextAll(filter) | 返回元素后面的所有兄弟元素。如果设置选择器,则只会返回匹配选择器的兄弟元素。 |
(selector).siblings(filter)(重点) | 返回元素前后的所有兄弟元素。如果设置选择器,则只会返回匹配选择器的兄弟元素。 |
8.7 操作集合的其他方法
方法 | 描述 |
---|---|
.add() | 向集合中添加新元素。 |
.contents() | 查找匹配元素内部所有的子节点(包括文本节点)。 |
.end() | 在jQuery链式调用中使用该方法;在当前调用链中结束最近的过滤操作,然后返回匹配元素的集合到之前的状态。 |
8.7 创建新HTML元素
使用jQuery动态创建元素是非常容易的,只需要给$()
函数传递一个包含HTML标签的字符串就可以创建一个jQuery对象。
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#000000">$</span>(<span style="color:#aa1111">'<div>Hello jQuery</div>'</span>);</span></span>
如果只是想创建一个空的<div>
元素,那么可以直接使用下面的简写代码:
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#000000">$</span>(<span style="color:#aa1111">'<div></div>'</span>);</span></span>
这种语法等价于下面的两种语法:
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#000000">$</span>(<span style="color:#aa1111">'<div>'</span>);
<span style="color:#000000">$</span>(<span style="color:#aa1111">'<div/>'</span>);</span></span>
假如要创建一个<img>
元素,它包含多个属性,并且可以点击该图片,我们可以下面的语法创建:
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#000000">$</span>(<span style="color:#aa1111">'<img>'</span>, {
<span style="color:#000000">src</span>: <span style="color:#aa1111">'img/photo.png'</span>,
<span style="color:#000000">alt</span>: <span style="color:#aa1111">''</span>,
<span style="color:#000000">title</span>: <span style="color:#aa1111">''</span>,
<span style="color:#000000">click</span>: <span style="color:#770088">function</span>() {
<span style="color:#000000">alert</span>(<span style="color:#aa1111">'nihao'</span>);
}
}).<span style="color:#000000">appendTo</span>(<span style="color:#aa1111">'body'</span>);</span></span>
这段代码创建一个包含多个属性,并且可以点击的<img>
元素,然后将该元素追加到了页面上的<body>
元素中。
9. 扩展内容
9.1 jQuery的事件
下面是 jQuery 中事件方法的一些例子:
<span style="background-color:#f8f8f8"><span style="color:#333333"> <span style="color:#000000">$</span>(<span style="color:#aa1111">"button"</span>).<span style="color:#000000">click</span>(<span style="color:#770088">function</span>(){
<span style="color:#000000">事件处理</span>
});</span></span>
9.2 操作css 方法
jQuery 可以使用 css 方法来修改简单元素样式; 也可以操作类,修改多个样式。
常用以下三种形式 :
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 1.参数只写属性名,则是返回属性值</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">strColor</span> <span style="color:#981a1a">=</span> <span style="color:#000000">$</span>(<span style="color:#770088">this</span>).<span style="color:#000000">css</span>(<span style="color:#aa1111">'color'</span>);
<span style="color:#aa5500">// 2. 参数是属性名,属性值,逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号</span>
<span style="color:#000000">$</span>(<span style="color:#770088">this</span>).<span style="color:#000000">css</span>(<span style="color:#aa1111">''</span><span style="color:#000000">color</span><span style="color:#aa1111">''</span>, <span style="color:#aa1111">''</span><span style="color:#000000">red</span><span style="color:#aa1111">''</span>);
<span style="color:#aa5500">// 3. 参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开, 属性可以不用加引号</span>
<span style="color:#000000">$</span>(<span style="color:#770088">this</span>).<span style="color:#000000">css</span>({ <span style="color:#000000">"color"</span>:<span style="color:#aa1111">"white"</span>,<span style="color:#000000">"font-size"</span>:<span style="color:#aa1111">"20px"</span>});
</span></span>
注意:css() 多用于样式少时操作,多了则不太方便。
9.3 添加与删除类名
<span style="background-color:#f8f8f8"><span style="color:#333333">作用等同于以前的 classList,可以操作类样式, 注意操作类里面的参数不要加点。
常用的三种设置类样式方法:</span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 1.添加类</span>
<span style="color:#000000">$</span>(<span style="color:#aa1111">"div"</span>).<span style="color:#000000">addClass</span>(<span style="color:#aa1111">"current"</span>);
<span style="color:#aa5500">// 2.删除类</span>
<span style="color:#000000">$</span>(<span style="color:#aa1111">"div"</span>).<span style="color:#000000">removeClass</span>(<span style="color:#aa1111">"current"</span>);
<span style="color:#aa5500">// 3.切换类</span>
<span style="color:#000000">$</span>(<span style="color:#aa1111">"div"</span>).<span style="color:#000000">toggleClass</span>(<span style="color:#aa1111">"current"</span>);
<span style="color:#aa5500">//4.检查当前元素是否含有某个特定的类,如有返回true</span>
<span style="color:#000000">$</span>(<span style="color:#aa1111">'div'</span>).<span style="color:#000000">hasClass</span>((<span style="color:#aa1111">"content"</span>);
</span></span>
9.4 jQuery的编程思想
-
链式编程
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 链式编程是为了节省代码量,看起来更优雅。</span>
<span style="color:#000000">$</span>(<span style="color:#770088">this</span>).<span style="color:#000000">css</span>(<span style="color:#aa1111">'color'</span>, <span style="color:#aa1111">'red'</span>).<span style="color:#000000">sibling</span>().<span style="color:#000000">css</span>(<span style="color:#aa1111">'color'</span>, <span style="color:#aa1111">''</span>); </span></span>
-
隐式迭代
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 遍历内部 DOM 元素(伪数组形式存储)的过程就叫做隐式迭代。</span>
<span style="color:#aa5500">// 简单理解:给匹配到的所有元素进行循环遍历,执行相应的方法,而不用我们再进行循环,简化我们的操作,方便我们调用。</span>
<span style="color:#000000">$</span>(<span style="color:#aa1111">'li'</span>).<span style="color:#000000">css</span>(<span style="color:#aa1111">'color'</span>, <span style="color:#aa1111">'red'</span>); <span style="color:#aa5500">// 页面中所有的li元素字体颜色设置为红色,不用循环操作</span></span></span>
-
jQuery 里面的排他思想
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 想要多选一的效果,排他思想:当前元素设置样式,其余的兄弟元素清除样式。</span>
<span style="color:#000000">$</span>(<span style="color:#770088">this</span>).<span style="color:#000000">css</span>(<span style="color:#000000">“color”</span>,<span style="color:#000000">”red”</span>);
<span style="color:#000000">$</span>(<span style="color:#770088">this</span>).<span style="color:#000000">siblings</span>(). <span style="color:#000000">css</span>(<span style="color:#000000">“color”</span>,<span style="color:#000000">””</span>);</span></span>
9.5 案例:tab 栏切换
$('.tab').click(function(){
$(this).addClass('active').siblings().removeClass('active');
$(".detail section").eq($(this).index()).addClass('active-sec').siblings().removeClass('active-sec');
})