jQuery事件机制
jQuery的事件机制,指的是:jQuery对JavaScript操作DOM事件的封装,包括了:事件绑定、事件解绑、事件触发。
jQuery事件的发展历程(了解)
简单事件绑定 >> bind事件绑定 >> delegate事件绑定 >> on【重点】
简单事件绑定:
1 | click(handler) 单击事件 |
bind方式(不推荐,1.7以后的jQuery版本被on取代)
作用:给匹配到的元素直接绑定事件
1 | // 绑定单击事件处理程序 |
比简单事件绑定方式的优势:
1. 可以同时绑定多个事件,比如:bind(“mouseenter mouseleave”, function(){})
缺点:要绑定事件的元素必须存在文档中。
3 delegate方式(特点:性能高,支持动态创建的元素)
作用:给匹配到的元素绑定事件,对支持动态创建的元素有效
1 | // 第一个参数:selector,要绑定事件的元素 |
与前两种方式最大的优势:减少事件绑定次数提高效率,支持动态创建出来的元素绑定事件!
on方式(最现代的方式,兼容zepto(移动端类似jQuery的一个库),强烈建议使用的方式)(重点)
jQuery1.7版本后,jQuery用on统一了所有的事件处理的方法
作用:给匹配的元素绑定事件,包括了上面所有绑定事件方式的优点
语法:
1 | // 第一个参数:events,绑定事件的名称可以是由空格分隔的多个事件(标准事件或者自定义事件) |
事件解绑
unbind() 方式
作用:解绑 bind方式绑定的事件
1 | $(selector).unbind(); //解绑所有的事件 |
undelegate() 方式
作用:解绑delegate方式绑定的事件
1 | $( selector ).undelegate(); //解绑所有的delegate事件 |
事件触发
简单事件触发
1 | $(selector).click(); //触发 click事件 |
trigger方法触发事件,触发浏览器行为
1 | $(selector).trigger(“click”); |
triggerHandler触发 事件响应方法,不触发浏览器行为
比如:文本框获得焦点的默认行为
1 | $(selector).triggerHandler(“focus”); |
jQuery事件对象介绍
1 | event.data 传递给事件处理程序的额外数据 |
jQuery补充
链式编程
链式编程原理:return this;
通常情况下,只有设置操作才能把链式编程延续下去。因为获取操作的时候,会返回获取到的相应的值,无法返回 this。
1 | end(); // 结束当前链最近的一次过滤操作,并且返回匹配元素之前的状态。 |
隐式迭代
隐式迭代的意思是:在方法的内部会为匹配到的所有元素进行循环遍历,执行相应的方法;而不用我们再进行循环,简化我们的操作,方便我们调用。
如果获取的是多元素的值,大部分情况下返回的是第一个元素的值。
each方法
有了隐式迭代,为什么还要使用each函数遍历?
大部分情况下是不需要使用each方法的,因为jQuery的隐式迭代特性。
如果要对每个元素做不同的处理,这时候就用到了each方法
作用:遍历jQuery对象集合,为每个匹配的元素执行一个函数
1 | // 参数一表示当前元素在所有匹配元素中的索引号 |
多库共存
此处多库共存指的是:jQuery占用了$ 和jQuery这两个变量。当在同一个页面中引用了jQuery这个js库,并且引用的其他库(或者其他版本的jQuery库)中也用到了$或者jQuery这两个变量,那么,要保证每个库都能正常使用,这时候就有了多库共存的问题。
1 | jQuery(function () { |
1 | // 模拟另外的库使用了 $ 这个变量 |
jQuery插件机制
jQuery这个js库,虽然功能强大,但也不是面面俱到包含所有的功能。
jQuery是通过插件的方式,来扩展它的功能:
当你需要某个插件的时候,你可以“安装”到jQuery上面,然后,使用。
当你不再需要这个插件,那你就可以从jQuery上“卸载”它。
(联想:手机软件,安装的app就好比插件,用的时候安装上,不用的时候卸载掉)
第三方插件
jQuery.color.js
animate()自定义动画:不支持背景的动画效果
animate动画支持的属性列表
jQuery.lazyload.js
使用步骤:
- 引入jQuery文件
- 引入插件
- 使用插件
- 7.2 制作插件
全局jQuery函数扩展方法
1 | $.pluginName = function() {}; |
jQuery对象扩展方法
1 | $.fn. pluginName = function() {}; |
jQueryUI
jQueryUI专指由jQuery官方维护的UI方向的插件。
官方API
其他教程:jQueryUI教程
基本使用:
1.引入jQueryUI的样式文件
2.引入jQuery
3.引入jQueryUI的js文件
4.使用jQueryUI功能