jquery

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > jquery > jQuery学习笔记

jQuery从新手到高手的超详细学习笔记(代码示例)

作者:沙漠举重的萝卜

jQuery是一个快速、小巧、功能丰富的JavaScript库,它的核心设计思想是 "Write Less, Do More"(写得更少,做得更多),通过封装常见的 JavaScript 任务,提供简洁易用的API,解决浏览器兼容性问题,让Web开发更加高效,jQuery在维护旧项目、快速原型开发或特定场景下仍有价值

jQuery 是一个快速、小巧、功能丰富的 JavaScript 库。它的核心设计思想是 "Write Less, Do More"(写得更少,做得更多),通过封装常见的 JavaScript 任务,提供简洁易用的 API,解决浏览器兼容性问题,让 Web 开发更加高效。

jQuery虽然不再是现代Web开发的必需品,但在维护旧项目、快速原型开发或特定场景下仍有价值。jQuery的学习从新手到高手分为3个阶段:核心基础-选择器、DOM操作、事件处理;中级技能-Ajax、动画效果、插件开发;高级理解-性能优化、与原生JS互操作、架构理解。

1 jQuery 概述

1.1 JavaScript 库

库,是用于开发软件的子程序集合。库和可执行文件的区别是,库不是独立程序,他们是向其他程序提供服务的代码库链接。

JavaScript 库:即 library,是一个封装好的特定的集合(方法和函数)。就是把各种常用的代码片段,组织起来放在一个 js 文件里,组成一个包,这个包就是 JavaScript 库。

简单理解:就是一个 JS文件,里面对我们原生 js 代码进行了封装,存放到里面。这样我们就可以快速高效的使用这些封装好的功能了。

比如 jQuery,就是为了快速方便的操作 DOM,里面基本都是函数(方法)。再比如 Prototype、Dojo、Extjs 、 YUI、移动端的 zepto 等等,这些都是优秀的 JavaScript 库。它们都是对原生 JavaScript 的封装,内部都是用 JavaScript 实现的。

1.2 jQuery

jQuery 是一个快速、简洁的 JavaScript 框架,是继 Prototype 之后又一个优秀的 JavaScript 代码库( 或 JavaScript 框架 )。 jQuery 设计的宗旨是 “write Less,Do More”,即倡导写更少的代码,做更多的事情。

jQuery = javascript Query(查询)。意思是查询 js,把 js 中的 DOM 操作做了封装,我们可以快速的查询使用里面的功能。

它封装 JavaScript 常用的功能代码,提供一种简便的 JavaScript 设计模式,优化 HTML 文档操作、事件处理、动画设计和 Ajax 交互。

优势:

  1. 轻量级。体积小,不会影响页面加载速度
  2. 强大的选择器
  3. 方便的选择页面元素(模仿 css 选择器更精确、更灵活)
  4. 出色的 DOM 操作的封装
  5. 对事件、样式、动画支持,大大简化了 DOM 操作
  6. 跨浏览器兼容。基本兼容了现在主流的浏览器
  7. 链式操作、隐式迭代
  8. 支持插件扩展开发。有着丰富的第三方插件。
  9. 免费、开源

2 jQuery 基本使用

2.1 jQuery 下载

① 官网地址:jQuery

② 版本区别:

2.2 导入方式

方式一:本地导入

直接在需要使用 jQuery 的页面引入 .js 文件:

<script src=" jQuery.js 文件路径"></script>

方式二:在线导入

我们可以通过在 script 的 src 属性中写一个网址来导入在线的 jquery 代码。

<script src="http://code.jquery.com/jquery-latest.js"></script>

2.3 jQuery 的入口函数

$(document).ready(function (){
    alert("hello jquery");
})
jQuery(document).ready(function () {
    alert("hello jquery");
})

// 简化方式,推荐
$(function () {
    alert("hi jquery");
})
jQuery(function () {
    alert("hi jquery");
})

2.4 jQuery 的顶级对象 $

  1. 释放使用权
jQuery.noConflict();
//1.释放操作在其他函数之前
//2.释放后不能用dollar符
  1. 修改访问符号
var suiBian = jQuery.noConflict();
//此时suiBian为新的访问符号

2.5 DOM对象 和 jQuery 对象

DOM 对象:用原生 js 获取过来的对象就是 DOM 对象。

jQuery 对象:用 jQuery 方式获取过来的对象就是 jQuery 对象。本质:通过 $ 把 DOM 元素进行了封装(伪数组形式存储)。

区别:jQuery 对象只能使用 jQuery 方法,反之亦然。

相互转换:

$('DOM对象');
$('DOM对象')[index]; // index 是索引号
$('DOM对象').get(index);

3 jQuery 常用 API

3.1 jQuery 选择器

3.1.1 jQuery 基础选择器

jQuery选择器虽然很多,但是选择器之间可以相互替代,就是说获取一个元素,你会有很多种方法获取到。所以我们平时真正能用到的只是少数的最常用的选择器。

$(“选择器”) // 选择器格式与 css 选择器格式一摸一样

名称用法描述
ID选择器$("#id");获取指定 ID 的元素
类选择器$(".class");获取同一类 class 的元素
标签选择器$(“div”);获取同一类标签的所有元素
并集选择器$(“div,li,p”);使用逗号分隔,获取多个元素
交集选择器$(“div.show”);获取 class 为 show 的 div 元素
全选选择器$("*");匹配所有元素

3.1.2 jQuery 层级选择器

名称用法描述
子代选择器$(“ul>li”);使用 > 号,获取儿子层级的元素;注意,并不会获取孙子层级的元素
后代选择器$(“ul li”);使用空格,代表后代选择器,获取 ul 下的所有 li 元素,包括孙子等

3.1.3 过滤选择器

名称用法描述
:eq(index)$(“li:eq(1)”);获取到的li元素中,选择索引号为1的元素,索引号index从0开始。
:odd$(“li:odd”);获取到的li元素中,选择索引号为奇数的元素
:even$(“li:even”);获取到的li元素中,选择索引号为偶数的元素

3.1.4 筛选选择器(方法)

筛选选择器的功能与过滤选择器有点类似,但是用法不一样,筛选选择器主要是方法。

名称用法描述
parent()$(".first").parent();查找父亲
children(selector)$(“ul”).children(“li”)相当于$(“ul>li”),子类选择器
find(selector)$(“ul”).find(“li”);相当于$(“ul li”),后代选择器
siblings(selector)$(".first").siblings(“li”);查找兄弟节点,不包括自己本身。
next()$(".first").next();查找当前元素之后的下一个兄弟
nextAll()$(".first").nextAll();查找当前元素之后的所有同辈元素
prev()$(".last").prev();查找当前元素之前的上一个兄弟
prevAll()$(“last”).prevAll();查找当前元素之前的所有同辈元素
hasClass(class)$(“div”).hasClass(“show”)检查当前的元素是否含有某个特定的类,如果有,则返回 true
eq(index)$(“li”).eq(2);相当于$(“li:eq(2)”),index 从0开始

3.1.5 排他思想

$(function() {
  $("button").click(function(){
      $(this).css();  // 对自己设置变化
      $(this).siblings("button").css();  // 给其他兄弟去掉变化
  })
})

3.1.6 链式编程

$(function() {
  $("button").click(function(){
   	$(this).css().siblings("button").css();  // 对自己设置变化,给其他兄弟去掉变化
  })
})

3.1.7 隐式迭代

遍历 jQuery 对象内部 DOM 元素(伪数组形式存储)的过程就叫隐式迭代

简单理解:给匹配的所有元素进行循环遍历,执行相应的方法,而不是我们再进行循环,简化我们的操作,方便我们的调用。

// 给四个div设置背景颜色为粉色 jquery对象不能使用style
$("div").css("background", "pink");
// 隐式迭代就是把匹配的所有元素内部进行遍历循环,给每一个元素添加css这个方法
$("ul li").css("color", "red");

3.2 jQuery 样式操作

3.2.1 操作 css 方法

jQuery 可以使用 css 方法来修改简单元素样式;也可以操作类,修改多个样式。

$(this).css("color");
$(this).css("color","red");
$(this).css({"color":"red","font-size":"20px"});

3.2.2 设置样式类方法

作用等同于以前的 classList,可以操作类样式,注意操作类里面的参数不要加点

$("div").addClass("current");
$("div").removeClass("current");
$("div").toggleClass("current");

3.2.3 与原生 js 区别

// js 中的 className 会覆盖元素原先里面的类名
var one = document.querySelector(".one");
one.className = "two";  // one : class="two"

// jQuery 里面的类操作只是对指定类进行操作,不影响原先的类名
$(".one").addClass("two");  // one: class="one two"

3.3 jQuery 效果

3.3.1 显示隐藏效果

① 显示效果

show([speed,[easing],[fn]])

② 隐藏效果

hide([speed,[easing],[fn]])

3.3.2 滑动效果

① 下滑效果

slideDown([speed],[easing],[fn])

② 上滑效果

slideUp([speed,[easing],[fn]])

③ 滑动效果

slideToggle([speed],[easing],[fn])

3.3.3 事件切换

hover([over,]out)

3.3.4 动画队列及其停止排队方法

① 动画或效果队列

动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。

② 停止排队

stop([clearQueue],[jumpToEnd])

注意:stop() 写到动画或者效果的前面,相当于停止结束上一次的动画。

3.3.5 淡入淡出效果

① 淡入效果

fadeIn([speed],[easing],[fn])

② 淡出效果

fadeOut([speed],[easing],[fn])

③ 淡入淡出切换效果

fadeToggle([speed,[easing],[fn]])

④ 渐进方式调整到指定的不透明度

fadeTo([[speed],opacity,[easing],[fn]])

3.3.6 自定义动画 animate

animate(params,[speed],[easing],[fn])

3.4 属性操作

3.4.1 设置或获取元素固有属性值 prop()

所谓元素固有属性就是元素本身自带的属性,如<a>元素里面的herf,<input>元素里面的type。

① 获取属性语法

prop("属性")

② 设置属性语法

prop("属性","属性值")

3.4.2 设置或获取元素自定义属性值 attr()

自定义属性就是用户自己给元素添加的属性。比如给li添加index="1"。

① 获取属性语法

attr("属性")

② 设置属性语法

attr("属性","属性值")

该方法也可用于获取 H5 自定义属性。

3.4.3 数据缓存 data()

data()方法可以在指定的元素上存取数据,并不会修改DOM 的元素结构,一旦页面刷新,之前存放的数据都将被移除。

① 附加数据语法

data("key","value")  // 向被选元素附加数据

② 获取数据语法

data("key")  // 从被选元素获取数据

如果浏览器支持 HTML5,同样可以读取该 DOM 中使用 data-[key] = [value] 所存储的值。

3.5 jQuery 内容文本值

3.5.1 普通元素内容 html()

相当于原生 js 中的 innerHTML

html()  // 获取元素的内容
html("内容")  // 设置元素的内容

3.5.2 普通元素文本内容 text()

相当于原生 js 中的 innerText

text()  // 获取元素的内容
text("内容")  // 设置元素的内容

3.5.3 表单值 val()

相当于原生 js 中的 value

val()  // 获取元素的内容
val("内容")  // 设置元素的内容

3.6 jQuery 元素操作

3.6.1 遍历元素

隐式迭代:对同一类元素做相同操作。如果做不同操作,需要使用遍历:

$("div").each(function (index, domEle) {xxx;})

// 也可以写成
$.each($("div"),function (index, domEle) {xxx;}))
// 主要用于处理数据
  • index 是每个元素的索引号,domEle 是每个 DOM 元素对象,不是 jQuery 对象

  • 想要使用 jQuery 方法,就要给这个 dom 元素转换为 jQuery 对象 $(domEle)

3.6.2 创建元素

① 内部添加

$("ul").append(li);//放到最后面,类似原生 appendChild

② 外部添加

el.before(内容);  // 把内容放到目标元素前面
el.after(内容);  // 把内容放到目标元素后面
  • 内部添加元素后是父子关系

  • 外部添加元素后是兄弟关系

3.6.3 删除元素

el.remove()  // 删除匹配节点(本身)
el.empty()  // 删除匹配节点的子节点
el.html("")  // 相当于 empty()

3.7 jQuery 尺寸、位置操作

3.7.1 jQuery 尺寸

语法用法
width()/height()取得匹配元素宽度和高度值,只算width/height
innerWidth()/innerHeight()取得匹配元素宽度和高度值,包括padding
outerWidth()/outerHeight()取得匹配元素宽度和高度值,包括padding和border
outerWidth(true)/outerHeight(true)取得匹配元素宽度和高度值,包括padding、border和margin
  • 以上参数为空,则获取响应值,返回的是数字型
  • 如果参数未数字,则是修改相应值
  • 参数可以不写单位

3.7.2 jQuery 位置

① offset() 设置或获取元素偏移

② position() 获取元素偏移

该方法只能获取不能设置偏移

③ scrollTop()/scrollLeft() 设置或获取元素被卷去的头部或左侧

4 jQuery 事件

4.1 事件注册

单个事件注册

element.事件(function);
$("div").click(function(){ 事件处理程序 })  // 其他事件和原生事件基本一致

4.2 事件处理

4.2.1 事件处理 on() 绑定事件

on(events,[selector],[data],fn)
// 同一对象不同操作不同回调
$("div").on({
  mouseenter:function() {
    $(this).css("color", "red");
  },
  mouseleave:function() {
    $(this).css("color", "black");
  }
})

// 同一对象不同操作相同回调
$("div").on("mouseenter mouseleave", function(){
  $(this).toggleClass("current");
})

可以事件委派操作。事件委派的定义是:把原来子元素身上的事件绑定到父元素上,就是把事件委派给父元素。

$("ul").on("click", "li", function(){
  alert("clicked li");
});

动态创建的元素,click() 没有办法绑定事件,on() 可以给动态生成元素绑定事件。

$("ul").on("click", "li", function(){
  alert("clicked li");
});
let li = $("<li>click</li>");
$("ul").append(li);

4.2.2 事件处理 off() 解绑事件

off(events,[selector],[fn])
off();  // 解除所有事件
off("click");  // 只解除点击事件
off("click", "li");  // 解除事件委托

4.2.3 事件处理 one() 绑定一次性事件

one(type,[data],fn)

4.2.4 自动触发事件 trigger()

有些事件希望自动触发,比如轮播图自动播放功能与点击右侧按钮功能一致,可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发。

el.click();  // 简写形式
el.trigger("type");  // 自动触发形式
el.triggerHandler("type");  // 自动触发形式,不会触发元素的默认行为

4.3 事件对象

事件被触发,就会有事件对象的产生。

on(events,[selector],function(even) { })
even.preventDefault()  // 阻止默认行为 或者用 return false
even.stopPropagation()  // 阻止冒泡

 

5 学习建议

到此这篇关于jQuery从新手到高手的超详细学习笔记(代码示例)的文章就介绍到这了,更多相关jQuery学习笔记内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文