JQuery的第一天

JQuery的第一天

认识 jQuery

jQuery是一个 Javascript 专注于 DOM 操作的类库,通过一系列的封装,不仅简化了 DOM 操作,还处理了不同浏览器之间的兼容,极大的提升了编码的效率,其口号是 Write Less Do More!

基础概念

jQuery 是基于 Javascript 构造函数的原型对象实现的,通过为原型对象添加属性或方法的方式实现对DOM 操作的封装

总结:
网页中引入 jQuery 后会得到一个全局的函数 jQuery 或 $
$ 是 jQuery 函数的别名,使用 $ 比使用jQuery 更方便 每次调用 jQuery 或 $ 函数都会得到一个新的实例
原型对象中存在许多的方法,调用这些方法实现 DOM的各种操作

选择器

jQuery 中的选择器是用来获取 DOM 节点的,其功能类似于原生的 querySelectorAll 方法,
jQuery 中所支持的选择器与 CSS 的选择器几乎一致。

选择器:jQuery通过元素的选择器获取元素、注意jQuery获取的是伪数组形式的,称为jQuery的对象
标签选择器 类选择器 id选择器 后代选择器

总结:
将 CSS 的选择器以参数形式传给 jQuery 函数后便可以获取相应的 DOM 节点
通过 jQuery 选择器获取 DOM节点的同时也得到了一个 jQuery 实例
调用实例方法完成相应的 DOM 操作
注:几乎所有 CSS 选择器都可以被 jQuery支持

对象

虽然在 jQuery 中利用选择器能获取到相应的 DOM 节点,但此时的 DOM 节点并非是原生的DOM 对象,因此也就无法直接调用原生的 DOM 方法

在 jQuery 中利用选择器获取的 DOM 节点 jQuery 构造函数的实例对象,只能调用实例的方法才能完 成 DOM 操作
我们将jQuery 获取的 DOM 节点对象称为 jQuery 对象,css 方法是 jQuery 对象的方法,而 style 是 原生 DOM对象中的一个属性。
在 jQuery 中并非只能通过选择器获取 jQuery 对象,它还可以将任意原生 DOM 对象转换成 jQuery对 象

JQuery对象---------> 原生对象

<p>11111111111</p>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>

1.1找下标

//1.1找下标
        $('p')[0].style.color = 'blue'
        $('p')[0].innerHTML = '128'

运行结果
在这里插入图片描述
1.2方式 JQuery对象.get(下标)

// 1.2方式  JQuery对象.get(下标)
        $('li').get(2).style.backgroundColor = 'pink'

运行结果
在这里插入图片描述
原生对象---------> JQuery对象

 let abc = document.querySelector('p')
        //需要转换
        // abc.css('color', 'pink')//报错
        $(abc).css('color', 'pink')

在这里插入图片描述

快捷方法

我们将以原生事件类型名称做为方法名为 DOM 添加事件的方式称为快捷方法,

总结: 语法简洁,接收回调函数做为参数,事件触发时该回调函数被执行
事件触发后回调函数中的 this 指向添加事件的原生 DOM
$(this) 是将原生 DOM 对象转换为 jQuery 对象

 $('.box').click(function () {
            $('.box').css('backgroundColor', 'blue')
        })
        $('.box').mouseover(function () {
            $('.box').css('width', '400px')
        })
        $('.box').mouseout(function () {
            $('.box').css('width', '200px')
        })

案例 抽奖活动
css样式

<style>
        .box {
            width: 500px;
            height: 500px;
            background: url(./img/1.jpg) no-repeat;
            background-size: contain;
            transition: all 5s;
            /* transform: rotate(188deg); */
        }

        span {
            width: 10px;
            height: 200px;
            display: block;
            background-color: #222;
            position: absolute;
            top: 82px;
            left: 255px;
            /* transform: translate(-50%, -100%); */
        }
    </style>
<button>开始抽奖</button>
    <div class="box">
    </div>
    <span></span>
    <script src="./jQuery/jquery-3.5.1.js"></script>
    <script>
    //每次旋转,从原来的基础上往上加,不然会逆时针回到原来的位置
        let num = 0
        $('button').click(function () {
        //随机函数
            num += Math.random() * 360 + 1000
            $('.box').css('transform', `rotate(${num}deg)`)
        })
    </script>

基础方法

在 jQuery 中使用快捷方法能够快速为 DOM 节点添加事件监听,然而灵活性方面略显不足,因此 jQuery 又提供了较为灵活的 on/off、bind/unbind、one 方法处理 DOM 事件

总结: on、bind、one 语法结构与 addEventListener 类似,分别接受事件类型和回调函数做为参数
on 和bind 含义基本一致推荐使用 on 添加事件监听,one 添加的事件监听只生效 1 次 off 和 unbind 用来移动 DOM的事件,无论以何种方式添加的事件均可被移除,推荐使用 off 方法
事件回调函数中的 this 仍然指向的是事添加事件监听的原生 DOM

 <button>开始抽奖</button>
    <div class="box">
    </div>
    <span></span>
    <script src="./jQuery/jquery-3.5.1.js"></script>
    <script>
        //  需求:点击后,转一次,再次点击没有反应
        $('button').on('click', function () {
            //1.内部计算一次
            let num = Math.random() * 360 + 1000
            // 2.设置box
            $('.box').css('transform', `rotate(${num}deg)`)
            // 3.移除事件
            $('button').off('click')
        })
    </script>

自定义事件

自定义事件类型语法与原生事件类型一致
自定义事件只能通过 trigger 方法才能被触发
trigger 方法也能用来触发原生事件类型
注:自定义事件是一种高级的用法,不必深入理解只需要了解其基本用法即可。

样式

行内样式

1.设置单个样式 行内

 $('.btn').click(function () {
            $('.demo').css('color', 'blue')
        })

运行结果
在这里插入图片描述
2.获取样式 (行内外)只要是个样式,进行获取

 $('.btn').click(function () {
 //jquery样式可以获取行外的样式
            let res = $('.demo').css('width')
            console.log(res);
//原生(webapi)方式获取只能获取行内样式
            let box = document.querySelector('.demo')
            console.log(box.style.width);
        })

设置多个样式

 // 1.设置多个样式  行内
        $('.btn').click(function () {
            // webapi 
            // let box = document.querySelector('.demo')
            // box.style.cssText = 'color:red;width:400px'
            $('.demo').css({
                color: 'red',
                backgroundColor: '#333',
                width: '400px'
            })
        })

总结:
接受两个参数(分别为样式属性和值)时,逐一改变网页元素单个的样式属性 接受一个参数时(对象类型),同时修改网页元素的多个样式属性
样式属性值为长度时,省略长度单位 px 接受单个样式属性做为参数时,能够获取该属性对应的值
注:css 方法对应原生 DOM 操作中的style 属性

类名操作

<style>
        .box {
            width: 200px;
            height: 200px;
            background-color: blueviolet;
        }

        .active {
            width: 500px;
            height: 100px;
            background-color: aqua;
            border-radius: 25px;
        }
    </style>
    <div class="box">111</div>
    <button class="add">添加类名</button>
    <button class="remove">移除类名</button>
    <button class="toggle">切换类名</button>
    <button class="has">检测类名</button>
    <script src="./jQuery/jquery-3.5.1.js"></script>

运行结果
在这里插入图片描述

1.添加类名

 $('.add').on('click', function () {
            $('.box').addClass('active')
        })

运行结果
在这里插入图片描述
2.移除类名

 $('.remove').on('click', function () {
            $('.box').removeClass('active')
        })

运行结果
在这里插入图片描述
3.切换类名

$('.toggle').on('click', function () {
            $('.box').toggleClass('active')
        })

运行结果
在这里插入图片描述
4.检测类名

$('.has').on('click', function () {
            let res = $('.box').hasClass('active')
            console.log(res);
        })

运行结果
在这里插入图片描述
在这里插入图片描述

隐式迭代

1.方法更加简短
2.隐式迭代:看不见 迭代(循环)
2.1理解为$(‘li’)内部帮助大家做循环遍历
2.2不光css 几乎99% JQ方法都有隐式迭代
3.特点:如果获取JQ对象(伪数组)里面所有成员是同一个设置时,默认隐式迭代

<style>
        .ac {
            font-size: 30px;
        }
    </style>
<ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
    </ul>
    <script src="./jQuery/jquery-3.5.1.js"></script>
 <script>
        // 1.方法更加简短
        // 2.隐式迭代:看不见  迭代(循环)
        //     2.1理解为$('li')内部帮助大家做循环遍历
        //     2.2不光css  几乎99%  JQ方法都有隐式迭代
        //3.特点:如果获取JQ对象(伪数组)里面所有成员是同一个设置时,默认隐式迭代
        $('li').css('backgroundColor', 'pink')
        $('li').addClass('ac')
    </script>

运行结果
在这里插入图片描述

函数内部this和e

<style>
        .aa {
            font-size: 30px;
            background-color: pink;
        }
    </style>
     <button>1</button>
    <button>2</button>
    <button>3</button>
    <button>4</button>
    <button>5</button>
    <button>6</button>
    <button>7</button>
    <button>8</button>
    <button>9</button>
    <button>10</button>
    <script src="./jQuery/jquery-3.5.1.js"></script>
    <script>
        $('button').click(function () {
            //全部移除类
            $('button').removeClass('aa')
            //当前变化
            $(this).addClass('aa')

        })
    </script>

运行结果
在这里插入图片描述

链式

链式也叫链式操作,它是 jQuery 中提供的一种简便的语法结构,可以在一定程度上精简代码、增强代码的可读性

//jq对象调用方法后,返回值

        let btns = $('button')
        let res = btns.on('click', function () {
            console.log(res == btns);
        })

运行结果 所以res与btns是相同的
在这里插入图片描述

 $('button').css('background', 'pink').on('click', function () {
            console.log(1);
        }).addClass('aa')

运行结果
在这里插入图片描述

总结:
链式操作只是一种简便的语法结构
链式操作时实例方法自左向右依次被执行

查找

父子关系

Find、children、parent、parents

find 方法,参照某父元素查找其后代元素,该方法以选择器做为参数,在其后代元素查找符合选择器条件的网页元素
children方法,参照某父元素查找其子元素、注: children 方法还允许传入选择器获取指定的子元素。
parent方法,参照某个子元素查找其父元素
parents 方法,参照某个子元素查找其祖先元素、注: parents方法还允许传入选择器获取指定的祖先元素。

兄弟关系

siblings、 prev、 next

siblings 方法,查找所有同级结构关系的元素、注: siblings 方法还允许传入选择器获取指定的兄弟元素。
prev方法,查找当前元素之前的同级结构元素
next 方法,查找当前元素之后的同级结构元素

筛选

first 方法,筛选出集合中的第一个元素
last 方法,筛选出集合中的最后一个元素
eq 方法,以索引为依据筛选集合中的元素

属性

attr 接受属性名为参数时用于获取该属性对应的值
attr 接受属性和值两个参数时用于设置该属性且赋值
注:针对自定义属性可以使用 data 方法。

文本

text 相当于原生的 innerText ,它无法解析 html 标签
html 相当于原生的 innerHTML,能够解析文本中的html 标签
html 和 text 方法不传入参数时用于读取文本内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值