jQuery,基础事件

学习要点:

  1.绑定事件

  2.简写事件

  3.复合事件

JavaScript 有一个非常重要的功能,就是事件驱动。当页面完全加载后,用户通过鼠标 或键盘触发页面中绑定事件的元素即可触发。jQuery 为开发者更有效率的编写事件行为,封 装了大量有益的事件方法供我们使用。

一.绑定事件

在 JavaScript 课程的学习中,我们掌握了很多使用的事件,常用的事件有:click、dblclick、 mousedown、mouseup、mousemove、mouseover、mouseout、change、select、submit、keydown、 keypress、keyup、blur、focus、load、resize、scroll、error。那么,还有更多的事件可以参考 手册中的事件部分。

jQuery 通过.bind()方法来为元素绑定这些事件。可以传递三个参数:bind(type, [data], fn), type 表示一个或多个类型的事件名字符串;[data]是可选的,作为 event.data 属性值传递一个 额外的数据,这个数据是一个字符串、一个数字、一个数组或一个对象;fn 表示绑定到指 定元素的处理函数。

bind()绑定事件函数,接收两个参数,参数1事件名称,参数2事件函数,可以绑定多个事件,也可以传入对象来绑定多个函数

使用点击事件

  1. //使用点击事件
  2. $('input').bind('click', function () { //点击按钮后执行匿名函数
  3. alert('点击!');
  4. });

普通处理函数

  1. //普通处理函数
  2. $('input').bind('click', fn); //执行普通函数式无须圆括号
  3. function fn() {
  4. alert('点击!');
  5. }

可以同时绑定多个事件

  1. //可以同时绑定多个事件
  2. $('input').bind('mouseout mouseover', function () { //移入和移出分别执行一次
  3. $('div').html(function (index, value) {
  4. return value + '1';
  5. });
  6. });

通过对象键值对绑定多个参数

  1. //通过对象键值对绑定多个参数
  2. $('input').bind({ //传递一个对象
  3. 'mouseout': function () { //事件名的引号可以省略
  4. alert('移出');
  5. },
  6. 'mouseover': function () {
  7. alert('移入');
  8. }
  9. });

unbind()删除绑定事件,有参删除当前元素指定的绑定事件,无参删除当前元素全部绑定事件

使用 unbind 删除绑定的事件

  1. //使用 unbind 删除绑定的事件
  2. $('input').unbind(); //删除所有当前元素的事件

使用 unbind 参数删除指定类型事件

  1. //使用 unbind 参数删除指定类型事件
  2. $('input').unbind('click'); //删除当前元素的 click 事件

使用 unbind 参数删除指定处理函数的事件

  1. //使用 unbind 参数删除指定处理函数的事件
  2. function fn1() {
  3. alert('点击 1');
  4. }
  5.  
  6. function fn2() {
  7. alert('点击 2');
  8. }
  9.  
  10. $('input').bind('click', fn1);
  11. $('input').bind('click', fn2);
  12. $('input').unbind('click', fn1); //只删除 fn1 处理函数的事件

二.简写事件

为了使开发者更加方便的绑定事件,jQuery 封装了常用的事件以便节约更多的代码。我 们称它为简写事件。

click(fn) 鼠标 触发每一个匹配元素的 click(单击)事件

  1. $('div').click(function () { //单击后触发事件函数
  2. alert('点击后执行');
  3. });

dblclick(fn) 鼠标 触发每一个匹配元素的 dblclick(双击)事件

  1. $('div').dblclick(function () { //双击后触发事件函数
  2. alert('执行');
  3. });

mousedown(fn) 鼠标 触发每一个匹配元素的 mousedown(鼠标左键按下)事件

  1. $('div').mousedown(function () {
  2. alert('执行');
  3. });

mouseup(fn) 鼠标 触发每一个匹配元素的 mouseup(鼠标左键弹起)事件

  1. $('div').mouseup(function () {
  2. alert('执行');
  3. });

mouseover(fn) 鼠标 触发每一个匹配元素的 mouseover(鼠标移入)事件,子元素也起作用

  1. $('div').mouseover(function () {
  2. alert('执行');
  3. });

mouseout(fn) 鼠标 触发每一个匹配元素的 mouseout(鼠标移出)事件,子元素也起作用

  1. $('div').mouseout(function () {
  2. alert('执行');
  3. });

mousemove(fn) 鼠标 触发每一个匹配元素的 mousemove(鼠标移动时)事件,

  1. $('div').mousemove(function () {
  2. alert('执行');
  3. });

mouseenter(fn) 鼠标 触发每一个匹配元素的 mouseenter(鼠标穿过)事件,子元素不起作用

  1. $('div').mouseenter(function () {
  2. alert('执行');
  3. });

mouseleave(fn) 鼠标 触发每一个匹配元素的 mouseleave(鼠标穿出)事件,子元素不起作用

  1. $('div').mouseleave(function () {
  2. alert('执行');
  3. });

mouseover()和.mouseout()表示鼠标移入和移出的时候触发。那么 jQuery 还封装了另外 一组:.mouseenter()和.mouseleave()表示鼠标穿过和穿出的时候触发。那么这两组本质上有 什么区别呢?手册上的说明是:.mouseenter()和.mouseleave()这组穿过子元素不会触发, 而.mouseover()和.mouseout()则会触发。

keydown(fn) 键盘 触发每一个匹配元素的 keydown(键盘按下)事件,事件函数可以传一个参数e来接收事件对象

  1. $('input').keydown(function () {
  2. alert('执行');
  3. });

事件函数可以传一个参数e来接收事件对象,这个事件对象有一个属性e.keyCode,返回按键码

  1. $('input').keydown(function (e) {
  2. alert(e.keyCode);
  3. });

keyup(fn) 键盘 触发每一个匹配元素的 keyup(键盘按下弹起)事件

  1. $('input').keyup(function () {
  2. alert('执行');
  3. });

事件函数可以传一个参数e来接收事件对象,这个事件对象有一个属性e.keyCode,返回按键码

  1. $('input').keyup(function (e) {
  2. alert(e.keyCode);
  3. });

keypress(fn) 键盘 触发每一个匹配元素的 keypress(键盘按下)事件

  1. $('input').keypress(function (e) {
  2. alert('执行');
  3. });

事件函数可以传一个参数e来接收事件对象,这个事件对象有一个属性e.charCode,返回按键字符编码

  1. $('input').keypress(function (e) {
  2. alert(e.charCode);
  3. });

注意:e.keyCode 和 e.charCode 在两种事件互换也会产生不同的效果,除了字符还有一 些非字符键的区别。更多详情可以了解 JavaScript 事件处理那章

unload(fn) 文档 当卸载本页面时,就是关闭刷新页面,绑定一个要执行的函数,火狐不支持,一般用于清理工作

  1. $(window).unload(function () {
  2. alert('执行');
  3. });

resize(fn) 文档 触发每一个匹配元素的 resize(浏览器窗口改变大小时)事件

  1. $(window).resize(function () {
  2. alert('执行');
  3. });

scroll(fn) 文档 触发每一个匹配元素的 scroll(滚动条拖动)事件

  1. $(window).scroll(function () {
  2. alert('执行');
  3. });

focus(fn) 表单 触发每一个匹配元素的 focus(焦点激活)事件,必须在当前元素上使用

  1. $('input').focus(function () {
  2. alert('执行');
  3. });

blur(fn) 表单 触发每一个匹配元素的 blur(焦点丢失)事件,必须在当前元素上使用

  1. $('input').blur(function () {
  2. alert('执行');
  3. });

focusin(fn) 表单 触发每一个匹配元素的 focusin(焦点激活)事件,可以在div上使用,可以绑定div里面的表单事件

  1. $('div').focusin(function () {
  2. alert('执行');
  3. });

focusout(fn) 表单 触发每一个匹配元素的 focusout(焦点丢失)事件,可以在div上使用,可以绑定div里面的表单事件

  1. $('div').focusout(function () {
  2. alert('执行');
  3. });

select(fn) 表单 触发每一个匹配元素的 select(文本选定)事件

  1. $('input').select(function () {
  2. alert('执行');
  3. });

change(fn) 表单 触发每一个匹配元素的 change(value值改变并且光标离开后)事件,

  1. $('input').change(function () {
  2. alert('执行');
  3. });

submit(fn) 表单 触发每一个匹配元素的 submit(表单提交)事件,此事件在form元素上使用

  1. $('form').submit(function () {
  2. alert('执行');
  3. });

三.复合事件

jQuery 提供了许多最常用的事件效果,组合一些功能实现了一些复合事件,比如切换功 能、智能加载等。

ready(fn) 当 DOM 加载完毕触发事件

  1. $().ready(function () {
  2. alert('执行');
  3. });

hover([fn1,]fn2) 当鼠标移入触发第一个 fn1,移出触发 fn2,鼠标移入移出事件,传一个参数是移入事件

  1. $('div').hover(function () {
  2. alert('执行移入');
  3. },function () {
  4. alert('执行移出');
  5. });

注意:.hover()方法是结合了.mouseenter()方法和.mouseleva()方法,并非.mouseover() 和.mouseout()方法。

自定义点击循环切换

  1. var flag = 1; //计数器
  2. $('div').click(function () {
  3. if (flag == 1) { //第一次点击
  4. $(this).css('background', 'black');
  5. flag = 2;
  6. } else if (flag == 2) { //第二次点击
  7. $(this).css('background', 'blue');
  8. flag = 3
  9. } else if (flag == 3) { //第三次点击
  10. $(this).css('background', 'red');
  11. flag = 1
  12. }
  13. });

第一百六十九节,jQuery,基础事件的更多相关文章

  1. 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

    第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...

  2. 第一百六十三节,jQuery,基础核心

    jQuery,基础核心 一.代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起 始的.而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所 ...

  3. 第一百六十五节,jQuery,过滤选择器

    jQuery,过滤选择器 学习要点: 1.基本过滤器 2.内容过滤器 3.可见性过滤器 4.子元素过滤器 5.其他方法 过滤选择器简称:过滤器.它其实也是一种选择器,而这种选择器类似与 CSS3 (h ...

  4. 第一百六十四节,jQuery,常规选择器

    jQuery,常规选择器 学习要点: 1.简单选择器 2.进阶选择器 3.高级选择器 jQuery 最核心的组成部分就是:选择器引擎.它继承了 CSS 的语法,可以对 DOM 元 素的标签名.属性名. ...

  5. 第一百二十九节,JavaScript,理解JavaScript库

    JavaScript,理解JavaScript库 学习要点: 1.项目介绍 2.理解JavaScript库 3.创建基础库 从本章,我们来用之前的基础知识来写一个项目,用以巩固之前所学.那么,每个项目 ...

  6. 第一百三十九节,JavaScript,封装库--CSS选择器

    JavaScript,封装库--修改元素选择器 就是将构造库函数修改成元素选择器,像css那样,输入#xxx .xxx xxx  (获取指定id下的指定class下的指定标签元素) 修改后的基础库 / ...

  7. 第一百六十八节,jQuery,表单选择器

    jQuery,表单选择器 学习要点: 1.常规选择器 2.表单选择器 3.表单过滤器 表单作为 HTML 中一种特殊的元素,操作方法较为多样性和特殊性,开发者不但可以 使用之前的常规选择器或过滤器,也 ...

  8. leecode第一百六十九题(求众数)

    class Solution { public: void quick_sort(vector<int>& nums,int res,int res_end) { )//错过,不能 ...

  9. 第二百六十九节,Tornado框架-Session登录判断

    Tornado框架-Session登录判断 Session需要结合cookie来实现 Session的理解 1.用户登录系统时,服务器端获取系统当前时间,进行nd5加密,得到加密后的密串 2.将密串作 ...

随机推荐

  1. High Speed Inter-CHIP USB 2.0 PHY

    转载:http://arasan.com/products/usb/usb-2-0/hsic-phy/ High Speed Inter-CHIP USB 2.0 PHY USB is the ubi ...

  2. 【mybatis】mybatis中update更新原来的值加1

    示例代码: floor的值 = floor原来的值+要更新的差距值 <update id="updateFloor" parameterType="com.pise ...

  3. Python图像处理(8):边缘检測

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 此前已经得到了单个区域植株图像,接下来似乎应该尝试对这些区域进行分类识别.通过外形和叶脉进行植物种 ...

  4. 实现一个Cglib代理Demo

    Cglib动态代理采用的是创建目标类的子类的方式.优点:不用实现额外接口,只操作我们关心类,高性能. package jesse.test; import java.lang.reflect.Meth ...

  5. html DOM 的继承关系

    零散的知识聚合在一起,就会形成力量,就有了生命力. 如各种语言的开发框架, 都是右各个碎片化的功能聚合在一起,构成有机地整体,便有了强大的力量.will be powerful! 如: jquery ...

  6. 电脑 F键(功能键)的具体作用

    F1:如果你处在一个选定的程序中而需要帮助,那么请按下F1.如果现在不是处在任何程序中,而是处在资源管理器或桌面,那么按下F1就会出现Windows的帮助程序.如果你正在对某个程序进行操作,而想得到W ...

  7. olede读excel

    注意点:需要比较excel文件中是否有重复列时,需要设置HDR=No,IMEX=1,即把第一列当做数据读取,不然读到的datatable列名会被自动加数字后缀. /// < summary> ...

  8. ExtjS学习--------Ext.define定义类

    Ext类Class的配置项:(注:Extjs的 的中文版帮助文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 ExtJS配置文件和演 ...

  9. Xcode, does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE) 解决办法

    在Build Settings中找到Enable Bitcode项,设置为如下: 参考:http://blog.csdn.net/soindy/article/details/48519363

  10. gm picture

    console.log("ok") /*var images = require("images");var fs = require("fs&quo ...