jQuery-day01

JQ入口函数 和 原生JS的window.onload

相似点: 可以让函数内的代码在最后执行,可以把代码写到头部。 区别: 执行个数: window.onload 只会执行一个(赋值会覆盖) JQ入口函数 可执行多个(函数可多次调用) 执行时机:(JQ入口函数优先执行) window.onload 当浏览器资源(图片,外链文件等)加载完毕时候执行 JQ入口函数 DOM节点加载完毕就可以执行了,不需要等待资源文件加载。 举个例子: 浏览器加载网页, 识别了 img 是个图片标签(JQ入口函数执行) 识别图片标签的 src 属性,向服务器发送请求这个src的图片 等待图片加载完毕,在页面中显示图片(window.onload执行) 一句话小结: JQ入口函数优先执行,可执行多个。

<!-- JQ套路第一步:JQ引包 -->
    <script src="lib/jquery-1.12.4.js"></script>
    <script>

        window.onload = function () {
            alert('JS的window.onload-----1');
        };
        window.onload = function () {
            alert('JS的window.onload-----2');
        };

        /* JQ套路第二步:入口函数 */
        $(function () {
            /* JQ套路第三步:业务代码 */
            alert('JQ的入口函数-----1');

        });
        $(function () {
            /* JQ套路第三步:业务代码 */
            alert('JQ的入口函数-----2');

        });
        /* JQ入口函数另一种写法 */
        $(document).ready(function () {
            alert('JQ的入口函数-----3');
        });
    </script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

JQ 修改CSS行内样式

​ 核心函数: ​ .css() ​ 用法1:修改单个样式 ​ .css('属性','值') ​ 用法2:获取单个属性的值(不传值代表获取) ​ .css('属性') ​ 用法3:修改多个样式(传入样式对象,同时修改多个) ​ .css({ 属性: 值 , 属性: 值 }) ​ JQ的很多方法都用几种用法, ​ 根据传参的不一样,调用不同的功能。

<!-- JQ套路第一步:JQ引包 -->
<script src="lib/jquery-1.12.4.js"></script>
<script>
    /* JQ套路第二步:入口函数 */
    $(function () {
        /* JQ套路第三步:业务代码 */
        $('input').click(function () {
            /* 修改单个样式 */
            // $('div').css('width', '500px');
            // $('div').css('height', '500px');
            /* 修改多个样式 -- 重点掌握 */
            // $('div').css({
            //     width: 100,
            //     height: 100,
            //     backgroundColor: 'green'
            // });
            /* 获取单个样式 -- 也要注意 */
            var res = $('div').css('width');
            alert(res);
        });
    });
</script>

<script>
    /* JQ套路第二步:入口函数 */
    $(function () {
        /* JQ套路第三步:业务代码 */
        // 1. 立 flag
        var flag = false;
        $('#btnHideDiv').click(function () {
            // 2. 改 flag
            flag = !flag;
            if (flag) {
                $('div').css({
                    width: 300,
                    height: 300,
                    backgroundColor: 'orange'
                })
            } else {
                $('div').css({
                    width: 200,
                    height: 200,
                    backgroundColor: 'pink'
                })
            }
        });
    });
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

JQ 控制类的方式修改CSS样式

.addClass() 添加一个或多个类 .removeClass() 删除一个或多个类 注意:是在原有类名的基础上添加或删除。

​ 类名和行内样式不要同时修改,否则行内样式权重高,覆盖类的代码。

.hasClass() 检测是否有类,返回布尔类型的 true / false

.toggleClass() - 重点 切换一个或多个类, 如果本来没有就添加类,如果有就移除

<!-- JQ套路第一步:JQ引包 -->
<script src="lib/jquery-1.12.4.js"></script>
<script>
    /* JQ套路第二步:入口函数 */
    $(function () {
        /* JQ套路第三步:业务代码 */
        $('#btnHideDiv').click(function () {
            /* 添加类的时候只写类名,不要多个点 */
            $('div').addClass('style01');
            /* 删除类 */
            // $('div').removeClass('box');
        });
    });
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

DOM 对象和 JQ对象

DOM对象

之前学习查找DOM对象的方法 document.getElementById() document.getElementsByTagName() document.querySelector() document.querySelectorAll() 以上方法查找到的叫 DOM对象

JQ对象

$(选择器)
  这种方式查找到的叫 JQ对象
注意:DOM 对象的属性、方法 和 JQ对象的属性、方法是不能直接调用的。
我们可以转换:
    1. DOM 对象转换成 JQ 对象
    语法:
        $(DOM对象)       用 $() 包装一下 DOM 对象就可以了
    注意:
        这里的DOM对象还包括 document, window, this,
        如果希望调用JQ的方法,$(document), $(window), $(this)
        
    2. JQ 对象转换成 DOM 对象
    JQ对象其实是基于DOM对象再进行包装。
    这些 DOM 对象在JQ中可以用<索引值>的方式获取到 DOM对象。
    语法:
        JQ对象[索引值]           // 推荐写法
        JQ对象.get(索引值)
    注意:
        这两种写法把JQ对象转成了DOM对象,可以调用DOM对象的方式书写代码。
        转换成DOM的同时就能调用JQ的方法了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

JQ 事件处理函数中的 this

this 在JQ中也代表当前的事件源, 但 this 是 DOM 对象,不能直接调用JQ的方法 解决办法: $(this) 转换成 JQ对象,就可以调用JQ方法了 注意: this 千万不能带引号

$(function () {
    $('input').click(function () {
    // console.log(this);
    /* $(this) 转换成 JQ对象,注意 this 千万不能带引号 */
    $(this).addClass('on');
    });
});
1
2
3
4
5
6
7

JQ排他思想

JQ 隐式迭代(你看不见的循环遍历,在JQ帮我们遍历了) $('input').click() 可以给所有按钮添加点击事件, 也就是说 .click() 函数有隐式迭代功能 在JQ中几乎所有方法都有隐式迭代功能。 所以JQ项目几乎可以不用for循环了。

$(function () {
    $('input').click(function () {
    /* 排他思想 */
    /* 1. 清除所有 */
    $('input').removeClass('on');
    /* 2. 确立自己 */
    $(this).addClass('on');
    });
});
1
2
3
4
5
6
7
8
9

JQ 链式编程。

​ JQ对象在调用完某个方法后,可以继续调用其他方法。 ​ 像链条一样连续书写,连续调用。

JQ 关系选择器,都是方法,记得带括号

父
.parent()
子
.children()
兄
.siblings()      注意:带s的
         
显示隐藏切换
   显示          .show()
   隐藏          .hide()
   切换          .toggle()
   
hover 事件
   语法:
   .hover(事件处理函数1, 事件处理函数2)
   1、允许传入<两个>事件处理函数:
   鼠标移入执行<事件处理函数1>
   鼠标移出执行<事件处理函数2>
   .hover(事件处理函数)
   2、传入<一个>事件处理函数
   表示鼠标移入和鼠标移出,都执行这个事件处理函数
   
 JQ 基本选择器
     CSS怎么写,JQ就怎么写
     通过 id 查找           $('#id')
     通过 类名 查找         $('.class')
     通过 标签名 查找       $('标签名')
     通过 通配符 查找       $('*')
     通过 并集选择器 查找   $('选择器1 , 选择器2')   逗号
     通过 后代选择器 查找   $('选择器1   选择器2')   空格
     通过 子代选择器 查找   $('选择器1 > 选择器2')   大于号
     了解:
     通过 下一个兄弟 查找   $('选择器1 + 选择器2')   加号
     通过 后面所有兄弟 查找 $('选择器1 ~ 选择器2')   波浪线
     :nth-child()          这些都支持
     ::after,::before      伪元素不支持
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36