正课:

1. 事件:

2. 动画:

3. 类数组对象操作:

4. 添加自定义API:

1. 事件:

1. 页面加载后执行: 2个时机

1. DOM内容加载完成: 仅包括html, js

DOMContentLoaded

何时: 如果不依赖css和图片的初始化操作(比如,事件绑定),都应该放在DOMContentLoaded中提前执行,让用户可以不必等待图片和css,就可提前使用

如何: $(document).ready(function(){

... ...

})

简化: $().ready(function(){

更简化: $(function(){ ... });

鄙视: $的原理:

1. 查找并封装DOM元素

如果选择器简单,使用的是按HTML查找

如果选择器复杂,才使用querySelectorAll

2. 直接封装现有DOM元素

3. 创建新元素

4. 绑定DOM内容加载提前执行的处理函数

2. 整个页面加载完成: 包括: html, js, css, 图片 ....

window.onload=function(){ ... }

何时: 必须依赖css或图片的行为,必须放在onload中

问题: 赋值方式绑定事件,只能绑定一个处理函数,后绑定会把先绑定的覆盖掉

解决: $(window).load(function(){ ... })

2. 鼠标事件:

mouseover  mouseout

问题: 进出子元素,也会频繁触发父元素上的处理函数

解决: mouseenter   mouseleave

优点: 即使频繁进出子元素,也不会反复触发父元素的处理事件

更简化: 如果同时绑定enter和leave,就可以只绑定hover

.hover( //相当于同时绑enter和leave

function(){ ... }, //给enter

function(){ ... } //给leave

)

更简化: 如果两个处理函数可统一为一个函数

.hover(

function(){ ... } //即给enter,又给leave

)

3. 模拟触发:

$elem.trigger("事件名")

可简写为: $elem.事件名();

2. 动画:

1. 简单动画: 3组效果:

显示隐藏: .show([ms])   .hide([ms])    .toggle([ms])

强调: .show()/.hide() 如果不加参数,默认是display:block/none,不带动画效果——推荐

上滑下滑: .slideUp(ms)   .slideDown(ms)    .slideToggle(ms)

淡入淡出: .fadeIn()      .fadeOut()     .fadeToggle()

原理: 用js的定时器修改的内联样式:

问题: 1. 效率不如css的transition

2. 写死的效果,不可维护

2. 万能动画: 可对多数css属性选择应用动画效果

$elem.animate({

css属性名: 目标值,

... : ...

},ms)

强调: 只支持单个数值的css属性

排队和并发:

1. 并发: 多个css属性,同时变化

如何: 在一个animate内的多个css属性,默认并发

2. 排队: 多个css属性,排队先后变化

如何: 对一个元素,先后调用多个animate,则排队执行

其它动画API,也有排队效果。

本质: 调用动画API,不是立刻启动动画的意思。只是将动画加入队列而已。

动画播放后执行:

每个动画API的最后一个参数,都是一个回调函数,会在动画播放后自动执行!

停止动画: .stop()

问题: 默认只能停止队列中当前正在播放的一个动画,后续动画依然执行

解决: .stop(true) 清空队列

选择器: :animated  选择或判断一个正在播放动画的元素

延迟执行: .delay(ms)

3. 类数组对象操作:

each: 对类数组对象中每个元素执行相同操作

2种用法:

1. 仅遍历jQuery对象中的每个DOM元素

$(...).each(function(i,elem){

//i 当前位置

//elem 当前元素对象

})

2. 可对所有索引数组和类数组对象,提供遍历操作

$.each(arr/类数组对象, function(i,elem){

... ...

})

鄙视: $(...).each()   vs  $.each()

其实就是实例方法和静态方法的比较

index: 在数组中查找一个指定元素的位置

var i=$(所有元素).index(要找的元素);

简写: 如果在同一个父元素下找直接子元素的位置

$(子元素).index()

4. 添加自定义方法:

3步:

1. 验证是否先引入了jQuery

2. 验证jQuery的原型对象中是否包含该方法

3. 向jQuery的原型对象中添加新方法

this->$( ... )  不用$(this)封装!

JQUERY-事件-动画-类数组对象-添加自定义API的更多相关文章

  1. jQuery的类数组对象结构

    Query就是为了获取DOM.操作DOM而存在的 所以为了更方便这些操作,让节点与实例对象通过一个桥梁给关联起来,jQuery内部就采用了一种叫"类数组对象"的方式作为存储结构,所 ...

  2. jQuery的类数组对象结构(转)

    原文:http://www.imooc.com/code/3248 为什么是类数组对象呢? 很多人迷惑的jQuery为什么能像数组一样操作,通过对象get方法或者直接通过下标0索引就能转成DOM对象. ...

  3. NodeList类数组对象: HTMLCollection , NamedNodeMap,两套API(childNodes , children)

    快捷键:leishuzuduixiang(类数组对象)  bianlijiedian(遍历节点)  jiedian(节点)  htmlcollection , namednodemap , nodel ...

  4. [Effective JavaScript 笔记]第58条:区分数组对象和类数组对象

    示例 设想有两个不同类的API.第一个是位向量:有序的位集合 var bits=new BitVector(); bits.enable(4); bits.enable([1,3,8,17]); bi ...

  5. JavaScript中的类数组对象

    在javascript中,对象与数组都是这门语言的原生规范中的基本数据类型,处于并列的位置. 一般来说,如果我们有一个对象obj和一个数组a: obj["attr1"];    / ...

  6. 什么是“类数组对象”,在jquer中怎样将类数组对象转换为数组对象

    类数组对象的定义: 所谓"类数组对象"就是一个常规的Object对象,如$("div")但它和数组对象非常相似:具备length属性, 并以0.1.2.3……等 ...

  7. 如何在JavaScript中手动创建类数组对象

    前言 关于什么是js的类数组对象这里不再赘述.可以参考这个链接,还有这里. js中类数组对象很多,概念简单的讲就是看上去像数组,又不是数组,可以使用数字下标方式访问又没有数组方法. 例: argume ...

  8. 类数组对象arguments 和 数组对象

    arguments并不是一个真正的数组,而是一个“类似数组(array-like)”的对象: 就像下面的这段输出,就是典型的类数组对象: {0:12, 1:23} 一.类数组 VS 数组 相同点: 都 ...

  9. 类数组对象与arguments

    类数组对象 所谓的类数组对象: 拥有一个 length 属性和若干索引属性的对象 举个例子: var array = ['name', 'age', 'sex']; var arrayLike = { ...

随机推荐

  1. 4Linux环境变量、Vim、Shell脚本

    环境变量 命令在Linux中的执行分为4个步骤: 1.以路径的形式来执行 2.命令的别名形式来执行,alias 新命令=“原始命令”,新命令与原始命令互不冲突,可以同时使用,重启失效,修改/etc/p ...

  2. Django之Form验证

    view.py 配置 from django import forms from django.forms import fields # Create your views here. class ...

  3. Faiss in python and GPU报错:NotImplementedError: Wrong number or type of arguments for overloaded function 'new_GpuIndexFlatL2'.

    最近在玩faiss,运行这段代码的时候报错了: res = faiss.StandardGpuResources()flat_config = 0index = faiss.GpuIndexFlatL ...

  4. springboot + schedule

    参考文章:https://blog.csdn.net/sinianliushui/article/details/78841713 参考文章: https://blog.csdn.net/hao703 ...

  5. css:伪类和伪元素

    一:伪类 1.   :active   想被激活的元素添加样式 2.   :focus   向拥有键盘输入焦点的元素添加样式 3.   :hover   当鼠标悬浮在元素上方时,向元素添加样式 4.  ...

  6. K8s快速入门

    在k8s中所有的内容都抽象为资源,资源实例化之后,叫做对象.一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单 资源清单的格式: apiVersion: ...

  7. logstash定时将mysql种数据同步到elasticsearch

    以Windows操作系统为例 1.下载logstash安装包,解压,配置好环境 2.在config目录中新增一个jdbc.conf input { stdin { } jdbc { # mysql 数 ...

  8. C#中将ListView数据导出为excel(转载)

      首先引用excel库,下面我把代码贴出来.                 /// <summary>        /// 将ListView的内容写入Excel表中         ...

  9. Win10 远程桌面连接出现“要求的函数不受支持”的解决办法之修改注册表

    问题起因 笔者自己在阿里云上搞服务器,有一台 Windows Server 必须通过远程桌面连接来管理,由于没能完全关掉 Win10 自带的烦人的系统更新,导致昨天安装完更新后出现了连接远程桌面时“要 ...

  10. MySQL编码不一致导致查询结果为空

    升级数据库后(5.1到8.0),发现一个奇怪的问题,某些页面在升级前可以正常查询,但升级后什么也查不出来了,有时候还会查出错误的结果.经过一整天的排查,终于发现由两个原因导致,现记录如下. 第一是数据 ...