jQuery基础

一、认识jQuery

jQuery就是一个JavaScript函数库

内部包含了大量的封装好的、可以直接调用的 JS函数

官方网站:

网址:https://www.jquery.com
下载历史版本:下载页面中下拉页面到最底部,可以看到这个链接记录

image.png

下载对应的版本文件
image.png

二、页面加载事件
JavaScript中提供了一个window.onload等待页面DOM元素和静态资源加载完成后再去执行事件中的代码,保障代码执行时可以访问页面中的所有数据
jQuery中提供了一个document.ready()等待页面DOM元素加载完成后执行回调函数内部的代码,保障代码执行时可以访问页面中的所有DOM元素

// 完整语法,编写过程过于繁琐
$(document).ready(function() {
  // 等待页面DOM加载完成后执行的代码
})
// jQuery进行了页面加载方式简化
// jQuery提供了/封装了一个jQuery()函数
jQuery(function() {
  // 等待页面加载后执行的代码
})
// 【推荐的最终语法】
// jQuery再次进行封装,将jQuery()封装成了$()
// jQuery = $
$(function() {
  // 等待页面DOM结构加载完成后执行代码
})

三、标签选择器
jQuery提供了一个选择器语法,可以快捷的根据css选择器选择页面中需要的标签

// 选择并获取到的标签对象:jQuery对象
$("css选择器")

(1) 认识jQuery对象

// 1、认识jQuery对象
// JS语法,选择标签
const _ct = document.querySelector("#container")
// JS选择器:标签对象、DOM对象
console.log('_ct', _ct)
// jQ语法,选择标签
const $ct = $("#container")
// JQ选择器:jQuery对象,是一个类似数组的集合
console.log('$ct', $ct)
// JS对象-> jQ对象:JS对象转换后就可以使用jQuery的函数
const jqObj = $(_ct)
console.log(jqObj)
// jQ对象-> js对象
const jsObj = $ct.get(0)
console.log(jsObj)

(2) 常见选择器
官方文档:https://jquery.cuishifeng.cn/

image.png


<body>
  <div id="container">
    <h3>琵琶行 <small>白居易</small></h3>
    <p class="impt">浔阳江头夜送客,枫叶荻花秋瑟瑟。</p>
    <p>主人下马客在船,举酒欲饮无管弦。</p>
    <p>醉不成欢惨将别,别时茫茫江浸月。</p>
    <p>忽闻水上琵琶声,主人忘归客不发。</p>
    <p>寻声暗问弹者谁,琵琶声停欲语迟。</p>
    <p>移船相近邀相见,添酒回灯重开宴。</p>
    <p class="impt">千呼万唤始出来,犹抱琵琶半遮面。</p>
    <p>转轴拨弦三两声,未成曲调先有情。</p>
    <p>弦弦掩抑声声思,似诉平生不得志。 </p>
    <div>
      <p>低眉信手续续弹,说尽心中无限事</p>
    </div>
    <hr>
    <button id="btn1">id选择器</button>
    <button id="btn2">class选择器</button>
    <button id="btn3">标签选择器</button>
    <button id="btn4">包含选择器</button>
    <button id="btn5">子类选择器</button>
    <button id="btn6">伪类选择器</button>
  </div>
  <script src="./js/jquery-2.2.4.js"></script>
  <script>
    $("#btn1").click(function () {
      // id选择器
      const $ct = $("#container")
      $ct.css("border", "solid 1px red")
    })
    $("#btn2").click(function () {
      // class选择器
      const $ps = $(".impt")
      $ps.css("background-color", "pink")
    })
    $("#btn3").click(function () {
      // 标签选择器
      const $p = $("p")
      $p.css("border-bottom", "orangered 2px solid")
    })
    $("#btn4").click(function () {
      // 包含选择器
      const $ps = $("#container p")
      $ps.css("border-bottom", "pink 5px solid")
    })
    $("#btn5").click(function () {
      // 子类选择器
      const $ps = $("#container > p")
      $ps.css("border-bottom", "green solid 2px")
    })
    $("#btn6").click(function () {
      // 伪类选择器
      const $p = $("#container > p:nth-of-type(1)")
      $p.css("border-bottom", "solid 2px red")
    })
    // 其他选择器,请移步官方文档...
  </script>
</body>

四、jQuery动画
jQuery针对网页中的常见的动画效果进行了封装

  • 动画:进入动画、离开动画、切换(显示/隐藏)动画
  • toggle():显示/隐藏直接切换
  • hide():隐藏
  • show():显示
  • fadeIn():透明度显示
  • fadeOut():透明度隐藏
  • fadeToggle():透明度显示/隐藏切换
  • fadeTo(0~1):透明度切换到某个值
  • slideDown():卷帘动画显示
  • slideUp():卷帘动画隐藏
  • slideToggle():卷帘动画显示/隐藏
  • ...
  • animate():自定义动画
    五、事件操作
    jQuery中提供了事件的绑定方式,也提供了事件拓展功能(阻止冒泡、阻止默认行为)
    ① 快捷绑定
    一般情况下,我们给网页中已经存在的元素进行事件绑定,使用快捷绑定函数;通过回调函数的方式给标签绑定事件
/ 当用户点击了id="box"的标签时,执行传递给click()处理单击事件的回调函数
$("#box").click(回调函数)
// $("#box")  选择器,选择了页面中id="box"的标签
// click()    处理单击事件的函数,jQuery是JS函数库,所有的操作都是函数式开发
// click(回调函数)   当单击事件发生了之后,调用回调函数
$("#box").click(function() {
  // 处理单击事件发生后的操作
})

② 常用绑定函数

  • bind():给指定的元素绑定事件,3.0版本废弃
    • unbind():给指定的元素取消绑定的事件
  • live():给指定的元素绑定事件,支持事件委托;1.7版本废弃
    • die():给指定的元素取消绑定的事件
  • delegate():给指定的元素绑定事件,支持事件委托;3.0版本废弃
    • undelegate()给指定的元素取消绑定的事件
  • on():给指定的元素添加绑定事件,支持事件委托(特殊语法)【推荐】
    • off()给指定的元素取消绑定的事件
      ③ 标准规范绑定
      规范1:建议页面已有元素的绑定,使用快捷方式;未来元素的绑定使用on()函数进行事件委托绑定
      规范2:建议页面中不论是存在的或者未来元素,统一使用on()进行绑定【推荐】,便于提高代码可读性、便于后期的的项目维护
      ④ 事件拓展
      事件执行过程中,需要处理事件冒泡和默认行为的问题,jQuery中如何处理?

遵循JavaScript中处理方式!对原生JS的处理进行了扩展

  • 阻止冒泡:event.stopPropagation()

  • 阻止默认行为:event.preventDefault()

六、BOM/DOM
(1) BOM
BOM操作,依然使用原生JavaScript中的内建对象进行操作

  • window
  • location
  • history
  • navigator
  • screen
  • document

jQuery中可以将DOM对象转还成jQuery对象进行操作

console.log(window, "BOM对象")
console.log($(window), "jQuery对象,支持使用jQuery提供的功能函数")

(2) DOM
DOM操作都是对网页文档中标签对象的增删改查

① 查询DOM节点

语法 描述
$(css选择器) jQuery选择器

② 新增DOM节点

语法 描述
$("<标签名称>") 创建一个节点<br />如:$("<div>")
$box.append($new) $new节点,追加到$box的子节点的末尾[记]
$new.appendTo($box) $new节点,追加到$box的子节点的末尾
$box.prepend($new) $new节点,插入到$box的第一个子节点位置[记]
$new.prependTo($box) $new节点,插入到$box的第一个子节点位置
$ex1.after($ex2) $ex2添加到$ex1的后面(同级/兄弟节点)[记]
$ex1.before($ex2) $ex2添加到$ex1的前面[记]
$ex2.insertAfter($ex1) $ex2添加到$ex1的后面(同级/兄弟节点)
$ex2.insertBefore($ex1) $ex2添加到$ex1的前面

③ 查询节点

语法 描述
$ps.eq(index) 获取索引位置的jQuery对象
$ps.get(index) 获取索引位置的JS对象
$ps.first() 获取第一个匹配的jQuery对象
$ps.last() 获取最后一个匹配的jQuery对象
$ps.children() 获取子节点
$ps.parents() 获取所有父节点
$ps.parent() 获取唯一的直接父节点
$ps.next() 获取下一个兄弟节点
$ps.nextAll() 获取后面所有兄弟节点
$ps.prev() 获取上一个兄弟节点
$ps.prevAll(0) 获取前面所有的兄弟节点

④ 删除节点

语法 描述
$box.remove() 删除当前节点
$box.empty() 删除$box中所有的子节点

(3) DOM 属性

语法 描述
$box.attr(name, value) 给名称为name的属性设置value值[记]
$box.attr(name) 获取名称为name的属性值[记]
$box.removeAttr(name) 删除名称为name的属性值[记]
$box.prop(name, value) 给名称为name的属性设置value
$box.prop(name) 获取名称为name的属性值
$box.removeAttr(name) 删除名称为name的属性值

(4) DOM样式

语法 描述
$box.css(key, value) 给名称为key的样式设置value
$box.css({k1:v1, k2:v2...}) $box同时设置多个样式
$box.css(key) 获取$box中名称为key的样式

(5) DOM内容

语法 描述
$box.text(内容) 设置文本内容
$box.text() 获取文本内容
$box.html(内容) 设置富文本内容
$box.html() 获取父文本内容

(6) class样式处理

语法 描述
$box.addClass(cname) $box添加一个类名称
$box.removeClass(cname) 删除$box上的一个类名称
$box.toggleClass(cname) TODO
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 前言 Google Play应用市场对于应用的targetSdkVersion有了更为严格的要求。从 2018 年...
    申国骏阅读 63,923评论 14 98
  • 《来,我们说说孤独》 1·他们都在写孤独 一个诗人 如果 不说说 内心的孤独 不将孤独 写进诗里 是不是很掉价呢 ...
    听太阳升起阅读 4,370评论 1 7
  • 自幼贫民窟长大的女子,侥幸多念了两本书,枉以为可以与人平起平坐。可是人生从来都是接力赛,我们却天真的当成了百米冲刺...
    Leeanran阅读 5,761评论 1 5
  • 云舒老师,姓甚名谁,男的女的,多大岁数,这些我全然不知。之所以要写写云舒老师,完全是因为他写的文章,如一个巨大的磁...
    数豆者m阅读 2,331评论 5 9
  • """1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello ...
    她即我命阅读 2,858评论 0 5