1. jQuery下载

在使用jQuery之前,需要先下载jQuery的文件,在引入文件后才能使用

jQuery官网
版本介绍:

1x :兼容 IE 678 等低版本浏览器, 官网不再更新 2x :不兼容 IE 678 等低版本浏览器, 官网不再更新 3x :不兼容 IE 678 等低版本浏览器, 是官方主要更新维护的版本


1. 入口函数

在jQuery中,有两种常见的入口函数

  1. // 第一种: 简单易用。
  2. $(function () {
  3. ... // 此处是页面 DOM 加载完成的入口
  4. }) ;
  5. // 第二种: 繁琐,但是也可以实现
  6. $(document).ready(function(){
  7. ... // 此处是页面DOM加载完成的入口
  8. });
  • 所谓的入口函数其实就是原生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获取的元素是不一样的,总结如下 :

  1. 用原生 JS 获取来的对象就是 DOM 对象
  2. jQuery 方法获取的元素就是 jQuery 对象。
  3. jQuery 对象本质是: 利用$对DOM 对象包装后产生的对象(伪数组形式存储)。

注意: 只有 jQuery 对象才能使用 jQuery 方法,DOM 对象则使用原生的 JavaScirpt 方法。


4. jQuery 对象和 DOM 对象转换

jQuery对象可以和DOM对象进行互换,因为原生js 比 jQuery 更大,原生的一些属性和方法 jQuery没有给我们封装. 要想使用这些属性和方法需要把jQuery对象转换为DOM对象才能使用。

  1. // 1.DOM对象转换成jQuery对象,方法只有一种
  2. var box = document.getElementById('box'); // 获取DOM对象
  3. var jQueryObject = $(box); // 把DOM对象转换为 jQuery 对象
  4. // 2.jQuery 对象转换为 DOM 对象有两种方法:
  5. // 2.1 jQuery对象[索引值]
  6. var domObject1 = $('div')[0]
  7. // 2.2 jQuery对象.get(索引值)
  8. var domObject2 = $('div').get(0)

总结:实际开发比较常用的是把DOM对象转换为jQuery对象,这样能够调用功能更加强大的jQuery中的方法。


5. jQuery基础选择器

  1. $("选择器") // 里面选择器直接写 CSS 选择器即可,但是要加引号
名称 用法 描述
ID选择器 $("#id") 获取指定的ID元素
全选选择器 $("*") 匹配所有的元素
类选择器 $(".class") 获取多个同类名元素
标签选择器 $("div") 获取同一类标签元素
并集选择器 $("div,p,li") 选取多个元素
交集选择器 $("li.current") 同时满足所有条件的元素

6. 层级选择器

名称 用法 描述
子代选择器 $("ul>li"); 只选择亲子代元素,隔代子元素不会选择
后代选择器 $("ul li"); 选择所有指定的后代

7. 筛选选择器

  1. 筛选选择器,顾名思义就是在所有的选项中选择满足条件的进行筛选选择。常见如下 :
语法 用法 描述
: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");

注意:

  1. 设置类样式方法比较适合样式多时操作,可以弥补css()的不足。
  2. 原生 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 滑入滑出

    三个方法:

    • slideDown()
    • slideUp()
    • slideToggle()
      //下滑语法规范
      slideDown([speed,[easing],[fn]])  //还是和上面的一样,滑出显示元素
      
      //上滑语法规范
      slideUp([speed,[easing],[fn]])  //一样 ,滑入隐藏元素
      
      //滑动切换
      slideToggle([speed,[easing],[fn]]) //依旧一样,注意带toggle的都是有切换效果的
      

      10.3 淡入淡出

      这回是四个:
  • 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);  //设置透明度动画
        }
      );
    });