jQuery学习笔记

jQuery

一、jQuery 概述

JavaScript 库

常见的 JavaScript 库

  • jQuery
  • Prototype
  • YUI
  • Dojo
  • Ext JS
  • 移动端的 zepto

二、jQuery 的基本使用

1、使用步骤

引入 jQuery 文件

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
   <script src="jquery.min.js"></script>
   <style>
       div {
           width: 200px;
           height: 200px;
           background-color: pink;
       }
   </style>
</head>
<body>
   <div></div>
   <script>
       $('div').hide();
   </script>
</body>
</html>

2、jQuery 的入口函数

$(function () {
   ... // 此处是页面 DOM 加载完成的入口
})
-----
$(document).ready(function() {
   ... // 此处是页面 DOM 加载完成的入口
})

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
   <script src="jquery.min.js"></script>
   <style>
       div {
           width: 200px;
           height: 200px;
           background-color: pink;
       }
   </style>
</head>
<body>
   <script>
       // $('div').hide();
       // $(document).ready(function() {
       //     $('div').hide();
       // })
       $(function() {
           $('div').hide();
       })
   </script>
   <div></div>

</body>
</html>

3、jQuery 的顶级对象 $

  1. jQuery 的别称
  2. jQuery 的顶级对象

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
   <script src="jquery.min.js"></script>
   <style>
       div {
           width: 200px;
           height: 200px;
           background-color: pink;
       }
   </style>
</head>
<body>
   <script>
       // $(function() {
       //     alert(1);
       // });
       jQuery(function() {
           // $('div').hide();
           jQuery('div').hide();
       })
   </script>
   <div></div>

</body>
</html>

4、jQuery 对象和 DOM 对象

jQuery 对象本质:利用 $ 对象包装后产生的对象(伪数组形式存储)

  1. DOM 对象转化为 jQuery 对象:== ( D O M 对象 ) = = ‘ (DOM对象)== ` (DOM对象)==(‘div’)`

  2. jQuery 对象转换为 DOM 对象(两种方式)

    $('div')[index]
    $('div').get(index)
    

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
   <script src="jquery.min.js"></script>
</head>
<body>
   <video src="mov.mp4" muted></video>
   <script>
       // 1. DOM → jQuery
       // (1)
       $('video');
       // (2)
       var myvideo = document.querySelector('video');
       // 2. jQuery → DOM
       $('video')[0].play();
       $('video').get(0).play();
   </script>
</body>
</html>

三、jQuery 常用API

1、jQuery选择器

jQuery 基础选择器

$("选择器") // 里面选择器直接写 CSS 选择器即可,但是要加引号

名称用法描述
ID 选择器$("#id")获取指定 ID 元素
通配符选择器$('*')匹配所有元素
类选择器$(".class")获取同一类 class 的元素
标签选择器$("div")获取同一类标签的所有元素
并集选择器$("div,p,li")选取多个元素
交集选择器$("li.current")交集元素
jQuery 层级选择器
名称用法描述
子代选择器$("ul>li");使用 > 号,获取亲儿子层级的元素(不会获取孙子层级的元素)
后代选择器$("ul li");使用空格,代表后代选择器,获取 ul 下的所有 li 元素,包括孙子等
知识铺垫

jQuery 设置样式

$("div").css('属性', '值')

隐式迭代

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

jQuery 筛选选择器
语法用法描述
:first$('li:first')获取第一个 li 元素
:last$('li:last')获取最后一个 li 元素
:eq(index)$('li:eq(2)')获取到的 li 元素中,选择索引号为 2 的元素,索引号 index 从 0 开始
:odd$('li:odd')获取到的 li 元素中,选择索引号为奇数的元素
:even$('li:even')获取到的 li 元素中,选择索引号为偶数的元素
jQuery 筛选方法
语法用法说明
parent()$('li').parent();查找父级
children(selector)$('ul').children('li');相当于$('ul>li'),最近一级
find(selector)$('ul').find('li');相当于$('ul li'),后代选择器
siblings(selector)$('.first').siblings('li');查找兄弟节点,不包括自己本身
nextAll([expr])$('.first').nextAll();查找当前元素之后所有的同辈元素
prevAll([expr])$('.last').prev('li');查找当前元素之前所有的同辈元素
hasClass(class)$('div').hasClass("protected");检查当前的元素是否含有某个特定的类,如果有则返回 true
eq(index)$('li').eq(2);相当于$('li:eq(2)'),index 从 0 开始
jQuery 排他思想

当前元素设置样式,其余兄弟元素清楚样式

链式编程

$(this).css('color', 'red').sibling().css('color', '');

2、jQuery 样式操作

操作 css 样式方法
  1. 参数只写属性名,返回属性值
    $(this).css('color');
  2. 参数是属性名,属性值,用逗号分隔
    $(this).css('color', 'red');
  3. 参数可以是对象形式,方便设置多组样式
    $(this).css({'color': "white", 'fontSize': '20px'});
设置类样式方法
  1. 添加类
    $('div').addClass('current');
  2. 移除类
    $('div').removeClass('current');
  3. 切换类
    $('div').toggleClass('current');
类操作与className区别

jQuery 里面的类操作知识对指定类进行操作,不影响原先的排名

3、jQuery 效果

常见动画效果:

  • 显示隐藏:show()、hide()、toggle()
  • 滑动:slideDown()、slideUp()、slideToggle()
  • 淡入淡出:fadeIn()、fadeOut()、fadeToggle()、fadeTo()
  • 自定义动画:animate()
显示隐藏效果
  1. 显示语法规范
    show([speed,[easing],[fn]])
  2. 显示参数
    • 参数都可以省略。无动画直接显示
    • speed:三种预定速度之一的字符串(“slow” , “nomal” or “fast”) 或表示动画时长的毫秒数值(如:1000)
    • easing:(Optional) 用来指定切换效果,默认值是 “swing”, 可用参数 “linear”。
    • fn:回调函数
  1. 隐藏语法规范
    hide([speed,[easing],[fn]])
  2. 隐藏参数
    • 参数都可以省略。无动画直接显示
    • speed:三种预定速度之一的字符串(“slow” , “nomal” or “fast”) 或表示动画时长的毫秒数值(如:1000)
    • easing:(Optional) 用来指定切换效果,默认值是 “swing”, 可用参数 “linear”。
    • fn:回调函数
  1. 切换语法规范
    toogle([speed,[easing],[fn]])
  2. 切换参数
    • 参数都可以省略。无动画直接显示
    • speed:三种预定速度之一的字符串(“slow” , “nomal” or “fast”) 或表示动画时长的毫秒数值(如:1000)
    • easing:(Optional) 用来指定切换效果,默认值是 “swing”, 可用参数 “linear”。
    • fn:回调函数
事件切换

hover([over,]out)

  1. over:鼠标移到元素上要触发的函数(相当于mouseenter)
  2. out:鼠标移出元素要出发的函数(相当于mouseleave)
动画队列及其停止排队方法

停止排队
stop()

  1. stop() 方法用于停止动画或效果
  2. 注意:stop() 写到动画或者效果的前面,相当于停止结束上一次的动画
淡入淡出效果
  1. 淡入语法规范
    fadeIn([speed,[easing],[fn]])
  2. 切换参数
    • 参数都可以省略。无动画直接显示
    • speed:三种预定速度之一的字符串(“slow” , “nomal” or “fast”) 或表示动画时长的毫秒数值(如:1000)
    • easing:(Optional) 用来指定切换效果,默认值是 “swing”, 可用参数 “linear”。
    • fn:回调函数
  1. 淡出语法规范
    fadeOut([speed,[easing],[fn]])
  2. 切换参数
    • 参数都可以省略。无动画直接显示
    • speed:三种预定速度之一的字符串(“slow” , “nomal” or “fast”) 或表示动画时长的毫秒数值(如:1000)
    • easing:(Optional) 用来指定切换效果,默认值是 “swing”, 可用参数 “linear”。
    • fn:回调函数
  1. 淡入淡出切换语法规范
    fadeToggle([speed,[easing],[fn]])
  2. 切换参数
    • 参数都可以省略。无动画直接显示
    • speed:三种预定速度之一的字符串(“slow” , “nomal” or “fast”) 或表示动画时长的毫秒数值(如:1000)
    • easing:(Optional) 用来指定切换效果,默认值是 “swing”, 可用参数 “linear”。
    • fn:回调函数
  1. 渐进方式调整到指定的不透明度
    fadeTo([[speed],opacity,[easing],[fn]])

  2. 效果参数

    • opacity 透明度必须写,取值 0~1 之间

    • speed:三种预定速度之一的字符串(“slow” , “nomal” or “fast”) 或表示动画时长的毫秒数值(如:1000)必须写

    • easing:(Optional) 用来指定切换效果,默认值是 “swing”, 可用参数 “linear”

    • fn:回调函数

自定义动画 animate
  1. 语法
    animate(params,[speed],[easing],[fn])
  2. 参数
    • params:想要更改的样式属性,以对象形式传递,必须写。属性名可以不用引导,如果是符合属性则需要采取驼峰命名法 borderLeft。其余参数可以省略。
    • speed:三种预定速度之一的字符串(“slow” , “nomal” or “fast”) 或表示动画时长的毫秒数值(如:1000)
    • easing:(Optional) 用来指定切换效果,默认值是 “swing”, 可用参数 “linear”
    • fn:回调函数

4、jQuery 属性操作

设置或获取元素固有属性值 prop()
  1. 获取属性语法
    prop("属性")
  2. 设置属性语法
    prop("属性", "属性值")
设置或获取元素自定义属性值 attr()
  1. 获取属性语法
    attr("属性") // 类似原生的 getAttribute()
  2. 设置属性语法
    attr("属性", "属性值") // 类似原生的 setAtrribute()

改方法也可以获取 H5 自定义属性

数据缓存 data()

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

5、jQuery 内容文本值

普通元素内容 html()(相当于原生innerHTML)

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

普通元素文本内容 text()(相当于原生 innerText)

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

表单的值 val()(相当于原生value)

val() // 获取表单的值
val(数字) // 设置表单的值

6、jQuery 元素操作

遍历元素

语法1:
$("div").each(function(index, domEle) { xxx; })

  1. each() 方法遍历匹配的每一个元素,主要用DOM处理。
  2. 里面的回调函数有2个参数:index 是每个元素的索引号,donEle 是每个DOM元素对象,不是jQuery对象
  3. 如果要使用jQuery方法,需要个这个dom元素转换为jQuery对象 $(domEle)

语法2:
$.each(object, function(index, element) { xxx; })

  1. $.each() 方法可用于遍历任何对象。主要用于数据处理,比如数组,对象
  2. 里面的函数有2个参数:index 是每个元素的索引号,element 遍历内容
创建元素

动态创建

语法:
$("<li></li>");

添加元素
  1. 内部添加
    element.append("内容")
    把内容放入匹配元素内部最后面,类似原生 appendChild。
    element.prepend("内容")
    把内容放入匹配元素内部最前面
  2. 外部添加
    element.after("内容") // 把内容放入目标元素后面
    element.before("内容") // 把内容放入目标元素前面
  • 内部添加元素,生成之后是父子关系。
  • 外部添加元素,生成之后是兄弟关系。
删除元素

element.remove() // 删除匹配的元素(本身)

element.empyt() // 删除匹配的元素集合中所有的子节点

element.html("") // 清空匹配的元素内容

7、jQuery 尺寸、位置操作

jQuery 尺寸
语法用法
width() / height取得匹配元素宽度值和高度值 只算 width / height
innerWidth() / innerHeight()取得匹配元素宽度值和高度值 包含 padding
outerWidth() / outerHeight()取得匹配元素宽度值和高度值 包含 padding、border
outerWidth(true) / outerHeight(true)取得匹配元素宽度值和高度值 包含 padding、border、margin
  • 参数为空,则是获取相应值,返回的是数字型
  • 参数为数字,则是修改相应值
  • 参数可以不添加单位
jQuery 位置
  1. offset() 设置或获取元素偏移
    • offset() 方法设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系
    • 该方法有两个属性 left、top
    • 可以设置元素的偏移:offset({ top: 10,left: 30 })
  2. position() 获取元素偏移
    • position() 方法用于返回被选元素相对于带有定位的父级偏移坐标,如果父级没有定位,则以文档为准
  3. scrollTop()/scrollLeft() 设置或获取元素被卷曲的头部和左侧
    • scrollTop() 方法设置或获取元素被卷曲的头部
    • scrollLeft() 方法设置或获取元素被卷曲的左侧

四、jQuery 事件

1、jQuery 时间注册

单个事件注册

语法:
element.事件(function() {} )
$("div").click(function() { 事件处理程序 } )

2、jQuery 事件处理

事件处理 on() 绑定事件

语法:
element.on(events,[selector],fn)

  1. events:一个或多个用空格分隔的事件类型
  2. selector:元素的子元素选择器
  3. fn:回调函数

on() 方法优势1:
可以绑定多个事件,多个事件处理程序:

$("div").on({
    mouseover: function() {},
    mouseout: function() {},
    click: function() {}
})
$("div").on("mouseover mouseout", function() {
    $(this).toggleClass("current");
})

on() 方法优势2:
可以事件委派操作:

$('ul').on('click', 'li', function() {
    alert("Hello world");
})

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

事件处理 off() 解绑事件

off() 方法可以移除通过 on() 方法添加的事件处理程序:

$("p").off() // 解绑p元素所有事件处理程序
$("p").off("click") // 解绑p元素上面的点击事件
$("ul").off("click", "li"); // 解绑事件委托

如果有的事件只想触发一次,可以使用 one() 来绑定事件。即同一种事件只能触发一次。

自动触发事件 trigger()

element.click() // 第一种简写形式
element.trigger("type") // 第二种简写形式
element.triggerHandler(type) // 第三种自动触发模式

3、jQuery 事件对象

事件被触发,就会有事件对象的产生:
element.on(events,[selector],function() {})

阻止默认行为:event.preventDefault() 或者 return false
阻止冒泡行为:event.stopPropagation()

五、jQuery 其他方法

1、jQuery 对象拷贝

如果想要吧某个对象拷贝(合并)给另外一个对象使用,此时可以使用 $.extend()方法
语法:
$.extend([deep], target, object1, [objectN])

  1. deep:如果设为 true 则为深拷贝,默认为 false:浅拷贝
  2. target:要拷贝的目标对象
  3. object1:待拷贝到第一个对象的对象
  4. objectN:待拷贝到第N个对象的对象
  5. 浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象
  6. 深拷贝:前面加 true,完全克隆(拷贝的对象而不是地址),修改目标对象不会影响被拷贝对象

2、jQuery 多库共存

jQuery 使用 $ 作为标识符,当其他 js 库也是用这个符号作为标识符时,混用会有冲突:
解决方案:

  1. 把里面的 $ 符号统一改为 jQuery,例如 jQuery(“div”)
  2. jQuery 变量规定新的名称:$.noConflict() var xx = $.noConflict();
  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值