1. jQuery下载
在使用jQuery之前,需要先下载jQuery的文件,在引入文件后才能使用
jQuery官网
版本介绍:
1x :兼容 IE 678 等低版本浏览器, 官网不再更新 2x :不兼容 IE 678 等低版本浏览器, 官网不再更新 3x :不兼容 IE 678 等低版本浏览器, 是官方主要更新维护的版本
1. 入口函数
在jQuery中,有两种常见的入口函数
// 第一种: 简单易用。$(function () {... // 此处是页面 DOM 加载完成的入口}) ;// 第二种: 繁琐,但是也可以实现$(document).ready(function(){... // 此处是页面DOM加载完成的入口});
- 所谓的入口函数其实就是原生js中的
DOMContentLoaded,但与load事件不同 - load事件在页面文档、外部js、css文件、图片加载完毕后再加载
 - 而jQuery入口函数则是在 DOM 结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成,
 - jQuery 帮我们完成了封装。
 
2. $ (jQuery中的顶级对象)
- 在jQuery中,$和jQuery都是jQuery的顶级对象,它们的地址都是一样的
 - $是 jQuery 的别称,在代码中可以使用 jQuery 代替,但一般为了方便,通常都直接使用 $ 。
 - $是jQuery的顶级对象,相当于原生JavaScript中的 window。把元素利用$包装成jQuery对象,就可以调用jQuery 的方法。
 
3.jQuery 对象和 DOM 对象
使用 jQuery 方法和原生JS获取的元素是不一样的,总结如下 :
- 用原生 JS 获取来的对象就是 DOM 对象
 - jQuery 方法获取的元素就是 jQuery 对象。
 - jQuery 对象本质是: 利用$对DOM 对象包装后产生的对象(伪数组形式存储)。
 
注意: 只有 jQuery 对象才能使用 jQuery 方法,DOM 对象则使用原生的 JavaScirpt 方法。
4. jQuery 对象和 DOM 对象转换
jQuery对象可以和DOM对象进行互换,因为原生js 比 jQuery 更大,原生的一些属性和方法 jQuery没有给我们封装. 要想使用这些属性和方法需要把jQuery对象转换为DOM对象才能使用。
// 1.DOM对象转换成jQuery对象,方法只有一种var box = document.getElementById('box'); // 获取DOM对象var jQueryObject = $(box); // 把DOM对象转换为 jQuery 对象// 2.jQuery 对象转换为 DOM 对象有两种方法:// 2.1 jQuery对象[索引值]var domObject1 = $('div')[0]// 2.2 jQuery对象.get(索引值)var domObject2 = $('div').get(0)
总结:实际开发比较常用的是把DOM对象转换为jQuery对象,这样能够调用功能更加强大的jQuery中的方法。
5. jQuery基础选择器
$("选择器") // 里面选择器直接写 CSS 选择器即可,但是要加引号
| 名称 | 用法 | 描述 | 
|---|---|---|
| ID选择器 | $("#id") | 
获取指定的ID元素 | 
| 全选选择器 | $("*") | 
匹配所有的元素 | 
| 类选择器 | $(".class") | 
获取多个同类名元素 | 
| 标签选择器 | $("div") | 
获取同一类标签元素 | 
| 并集选择器 | $("div,p,li") | 
选取多个元素 | 
| 交集选择器 | $("li.current") | 
同时满足所有条件的元素 | 
6. 层级选择器
| 名称 | 用法 | 描述 | 
|---|---|---|
| 子代选择器 | $("ul>li"); | 
只选择亲子代元素,隔代子元素不会选择 | 
| 后代选择器 | $("ul li"); | 
选择所有指定的后代 | 
7. 筛选选择器
筛选选择器,顾名思义就是在所有的选项中选择满足条件的进行筛选选择。常见如下 :
| 语法 | 用法 | 描述 | 
|---|---|---|
| :first | $("li:first") | 
获取第一个元素 | 
| :last | $("li:last") | 
获取最后一个元素 | 
| :eq(index) | $("li:eq(2)") | 
获取到的li元素中选择索引(index)为2的元素,索引从0开始 | 
| :odd | $("li:odd") | 
获取索引为奇数的li元素 | 
| :even | $("li:even") | 
获取索引为偶数的li元素 | 
另外: jQuery中还有一些筛选方法,类似DOM中的通过一个节点找另外一个节点,父、子、兄以外有所加强。
| 语法 | 用法 | 说明 | 
|---|---|---|
| parent() | $("li").parent(); | 
查找父级 | 
| children(seletor) | $("ul").children("li") | 
查找亲子代 | 
| find(selector) | $("ul").find("li") | 
查找后代 | 
| siblings(selector) | $(".first").siblings("li") | 
查找除自己以外的所有兄弟节点 | 
| nextAll([expr]) | $(".first").nextAll() | 
查找当前元素后面的所有元素 | 
| prevtAll([expr]) | $(".first").prevtAll() | 
查找当前元素前面的所有元素 | 
| hasClass(class) | $("div").hasClass("protected") | 
检查当前元素是否含有特定类,有就返回true | 
| eq(index) | $("li").eq(2); | 
等同$("li:eq(2)"),index从0开始 | 
8. jQuery CSS样式设置
$('div').css('属性', '值')
排他思想实现
$(this).css(“color”,”red”);
$(this).siblings(). css(“color”,””);//通过sibling选择其他所有兄弟清空样式
隐式迭代
// 遍历内部 DOM 元素(伪数组形式存储)的过程就叫做隐式迭代。
// 简单理解:给匹配到的所有元素进行循环遍历,执行相应的方法.
//而不用我们再进行循环,简化我们的操作,方便我们调用。
$('div').hide();  // 页面中所有的div全部隐藏,不用循环操作
链式编程
// 链式编程是为了节省代码量,看起来更优雅。
$(this).css('color', 'red').sibling().css('color', '');
9. jQuery 样式操作
jQuery中常用的样式操作有两种:css() 和 设置类样式方法
第一种方法:操作CSS
// 1.参数只写属性名,则是返回属性值
var strColor = $(this).css('color');
// 2.参数是属性名,属性值,逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号
$(this).css(''color'', ''red'');
// 3.参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开, 属性可以不用加引号
$(this).css({ "color":"white","font-size":"20px"});
**注意**:css() 多用于样式少时操作,多了则不太方便。
第二种方法: 操作CSS类
// 1.添加类
$("div").addClass("current");
// 2.删除类
$("div").removeClass("current");
// 3.切换类
$("div").toggleClass("current");
注意:
- 设置类样式方法比较适合样式多时操作,可以弥补css()的不足。
 - 原生 JS 中 className 会覆盖元素原先里面的类名,jQuery 里面类操作只是对指定类进行操作,不影响原先的类名
 
10. jQuery 效果(动画)
jQuery 给我们封装了很多动画效果,最为常见的如下
- 显示隐藏:show() / hide() / toggle() ;
 - 划入画出:slideDown() / slideUp() / slideToggle() ;
 - 淡入淡出:fadeIn() / fadeOut() / fadeToggle() / fadeTo() ;
 - 自定义动画:animate()
注意: 动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。 jQuery为我们提供另一个方法,可以停止动画排队:stop() ;
 
10.1 显示隐藏
三个方法:
- show()
 - hide()
 toggle()
//显示语法规范 show([speed,[easing],[fn]]) //speed 播放速度,可以设置毫秒数值 ,也可以通过预定的字符串“slow”、“normal”、“fast” //easing 播放效果,linear 线性播放 swing为默认 //fn 回调函数,动画执行完毕后再执行回调函数//隐式语法规范 hide([speed,[easing],[fn]]) //参数类型与显示方式一致//切换语法 隐藏时显示、显示时隐藏 toggle([speed,[easing],[fn]]) //依旧一致 //但一般用的时候都是只带播放速度10.2 滑入滑出
三个方法:
fadeIn()
- fadeOut()
 - fadeToggle()
 - fadeTo()
//淡入语法规范 fadeIn([speed,[easing],[fn]])//淡出语法规范 fadeOut([speed,[easing],[fn]])//淡入淡出切换 fadeToggle([speed,[easing],[fn]])
注意://渐进方式调整指定的透明度 fadeTo([speed,opacity,[easing],[fn]]) 
- opacity 透明度必须填写,取值再0~1范围内
 - speed必须填写(在fadeIn()里面)
 
11. 自定义动画 animate()
animate(params,[speed],[easing],[fn]) //除params以外其余参数可以省略
//params 为对象属性,是想要改变的样式属性,且必须填写,属性名可以不带引号
例子
<body>
    <button>动起来</button>
    <div></div>
    <script>
        $(function() {
            $("button").click(function() {
                $("div").animate({
                    left: 500,
                    top: 300,
                    opacity: .4,
                    width: 500
                }, 500);
            })
        })
    </script>
</body>
12. 停止动画 stop()
动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。
    停止动画排队的方法为:stop() ;
- stop() 方法用于停止动画或效果。
 stop() 写到动画或者效果的前面, 相当于停止结束上一次的动画。
总结: 每次使用动画之前,先调用 stop() ,在调用动画。$(this) .stop() //停止上一次动画 .animate( { width: 224, }, 1000 ) .find(".small") .stop() //停止上一次动画 .fadeOut() .siblings(".big") .stop() //停止上一次动画 .fadeIn(); //鼠标移入效果
13. 事件切换 hover
hover([over,]out)     // 其中over和out为两个函数
- over:鼠标移到元素上要触发的函数(相当于mouseenter)
 - out:鼠标移出元素要触发的函数(相当于mouseleave)
 - 如果只写一个函数,则鼠标经过和离开都会触发它
 
例子
$(function () {
      $(".wrap li").hover(    //事件切换,先填写移入触发事件
        function () {
          $(this).siblings().stop().fadeTo(400, 0.5);//设置兄弟节点淡出动画
        },
        function () {
          $(this).siblings().stop().fadeTo(400, 1);  //设置透明度动画
        }
      );
    });
                    