jquery提供了许多的事件处理函数,下面对其总结一下,梳理一下知识点,便于记忆和使用。


一、鼠标事件

1. click():鼠标单击事件

$div = $("div")
$div.click(data,function (event) { //点击盒子变蓝
$(this).css({
"background": "blue",
});
console.log(event);
})
  • 参数function:匿名函数有且只有一个默认的参数event,event输出事件相关的信息;不允许有其他的参数,可以不写
  • 参数data:有时候需要传递额外的数据给函数,data可以是一个数组,不需要可以省略

扩展:

//event参数可以获取事件的各种属性,有几个常用

event.target:  获取触发事件的元素

$div.click(function (event) {
$(event.target).css({
"background": "blue",
});
}) event.data: 获取事件传入的参数数据。
event.pageX: 获取鼠标光标点击距离文档左边left的距离;
event.pageY: 获取鼠标光标点击距离文档上边top的距离; event.offsetX: 获取鼠标光标点击距离元素左边left的距离;
event.offssetY: 获取鼠标光标点击距离元素上边top的距离; event.screenX: 获取鼠标光标点击距离屏幕left的距离;
event.screenY: 获取鼠标光标点击距离屏幕top的距离;

2. dblclick():鼠标双击事件

$div = $("div")
$div.dblclick()(function (event) { //双击盒子变蓝
$(this).css({
"background": "blue",
});
})
  • 参数和click的用法完全一样,event同样可以获取众多的属性。

3. 鼠标进入和离开(进入子元素也触发)

  • mouseover():进入
  • mouseout():离开
$div = $("div")
$div.mouseover(function (event) {
$(this).css({
"background": "blue",
});
})
$div.mouseout(function (event) {
$(this).css({
"background": "blue",
});
})
  • 参数同上,绑定后鼠标进入元素的子元素会再次触发。

4. 鼠标进入和离开(进入子元素不触发)

  • mouseenter() 鼠标进入
  • mouseleave() 鼠标离开
$div = $("div")
$div.mouseenter(function (event) {
$(this).css({
"background": "blue",
});
})
$div.mouseleave(function (event) {
$(this).css({
"background": "blue",
});
})
  • 参数同上,绑定后鼠标进入和离开子元素不会再次触发。

5. hover():同时为mouseenter和mouseleave事件指定处理函数

$div = $("div")
// 鼠标进入和移出事件
$div.hover(function (event) {
$div.css({
"background": "blue",
}) },function (event) {
$div.css({
"background": "red",
});
})
  • hover可以同时加入两个function,第一个是鼠标进入触发,第二个是移出触发。
  • 前面不可以添加data参数,否则报错。

6. 鼠标按下和松开

  • mouseup() 松开鼠标
  • mousedown() 按下鼠标
$div = $("div")
$div.mousedown(function (event) {
$(this).css({
"background": "blue",
});
console.log(event);
}) $div.mouseup(function (event) {
$(this).css({
"background": "blue",
});
console.log(event);
})
  • 参数同click,和点击事件click不同的是,click在鼠标点击(包括按下和松开)后才触发事件,这里是按下或松开就会触发。

7. mousemove() 鼠标在元素内部移动

  • 同法和参数同上。

二、键盘事件

*keypress():按下键盘(指的是按下)

 $(window).keypress([20],function (event) {
$div.css({
"background": "blue",
});
console.log(event.which);
})
  • 参数:同鼠标事件,第一个参数传递数据,function默认参数event值按下键盘事件。
  • 键盘事件需要绑定可获得焦点的元素,如:input,body,html,一般绑定窗口:window。
  • 如果需要具体判断按下了那个按键,使用event.which,返回键盘字母的ascii码。

注意:如果按下不放开,事件会连续触发。

*按下和松开

  • keydown() 按下键盘
  • keyup() 松开键盘
$(window).keydown([20],function (event) {
$div.css({
"background": "blue",
});
console.log(event);
}) $(window).keyup([20],function (event) {
$div.css({
"background": "blue",
});
console.log(event);
})
  • 参数同上。
  • keydown和keypress方法区别在于,keypress事件不会触发所有的按键,比如 ALT、CTRL、SHIFT、ESC等。

三、焦点事件

* 元素获取和失去焦点

  • blur() 元素失去焦点
  • focus() 元素获得焦点
$put = $("input");
$put.focus():元素自动获取焦点 $put.focus(function (event) {
console.log(event);
$div.css({
"background": "blue",
})
})//获取焦点后触发事件 $put.blur(function (event) {
console.log(event);
$div.css({
"background": "blue",
})
})//失去焦点后触发事件
  • 参数同click;
  • 焦点事件一般使用在input标签上,其他的标签一般得不到焦点。

四、表单事件

* submit(): 用户递交表单

$(".form").submit(function (event) {
alert("提交事件");
console.log(event);
//阻止系统默认事件
event.defaultPrevented();
return false;
})
  • submit事件绑定在form表单上,点击提交按钮时触发该事件,可以对系统默认的提交进行拦截。
  • event.defaultPrevented();//阻止系统提交数据

五、其他事件

* ready():DOM加载完成后执行

  • 这个事件用来防止js报错,每次引入js都要使用,不在赘述。

* resize():浏览器窗口的大小发生改变触发事件

$(window).resize(function () {
console.log($(window).width());
})
  • 参数同click,这个事件需要绑定在window上才会生效,用于监控窗口的变化。

* scroll():滚动条的位置发生变化

* change(): 表单元素的值发生变化

$put.change(function () {
$div.css({
"background": "blue",
}); })
  • 当表单元素如单选框、多选框、文本框等值发生变化时触发。

* unload() :用户离开页面

$(document).unload(function () {
$div.css({
"background": "blue",
});
console.log("likai");
})

六、通用的绑定事件和解绑方法

* bind():绑定

$(function(){
$('div').bind('mouseover click', function(event) {
alert($(this).html());
});
});
  • 参数:第一个参数为需要绑定的事件的名字,可以绑定多个事件,之间用空格隔开;第二个参数是处理函数。

* unbind():解绑

$(function(){
$('#div1').bind('mouseover click', function(event) {
// $(this).unbind();解绑所有事件
$(this).unbind('mouseover');解绑指定事件
});
});
  • 参数同bind。

* on():绑定和委托都可用的方法

$("div").on(event,childSelector,data,function);
//四个参数 $(function(){
$('div').on('mouseover click', function(event) {
$(this).css({
"background": "blue",
});
});
});
  • 参数
  • event,需要绑定的事件,多个事件用空格隔开;
  • function:事件的处理方法。
  • childSelector:选择需要委托的元素,用于委托事件。
  • data:额外的传参。

* off():解绑

$(function(){
$('#div1').on('mouseover click', function(event) {
// $(this).off();解绑所有事件
$(this).off('mouseover');解绑指定事件
});
});

* one():绑定一次自动解绑

如果需要触发事件一次后就自动失效,比如:按钮点击一次后 就失效使用这个方法。

$(function(){
$('div').one('mouseover click', function(event) {
$(this).css({
"background": "blue",
});
});
});
  • 注意:当一次性绑定多个事件时,多个事件相互是独立的,即如果有一个事件被触发,那么这个事件解绑,对另外没有被触发的事件没有影响。

七、自定义和主动触发事件

说明:对于系统没有提供的事件,可以自己定义并主动触发。

$div.bind("abc",function () {
$(this).css({
"background": "blue",
}); })
$div.trigger("abc");
  • trigger():触发事件的方法;这种方式类似协程。

八、事件的两大特征运用:

1. 事件的冒泡:

  • 定义:一个元素标签如div,在上面触发某种事件,如单击;如果div上没有定义单击事件或者定义了单击事件,但返回值不是false,即没有阻止冒泡;那么事件会向父级传递,每一个定义了单击事件的父级都会被触发事件,直到到达document或window。
注意:冒泡是事件的固有属性(自定义不适用),适合所有的系统事件。
  • 作用: 允许多个事件被击中到父级处理,减少绑定次数,提高性能。
$(function(){
var $box1 = $('.father');
var $box2 = $('.son');
var $box3 = $('.grandson');
$box1.click(function() {
alert('father');
});
$box2.click(function() {
alert('son');
});
$box3.click(function(event) {
alert('grandson');
// event.stopPropagation();阻止冒泡 });
$(document).click(function(event) {
alert('grandfather');
});
}) ...... <div class="father">
<div class="son">
<div class="grandson"></div>
</div>
</div>
  • 说明:上面代码界面,单击“grandson”的div,所有事件都会被触发;
  • 如果要阻止事件冒泡,使用stopPropagation()

扩展:合并阻止操作

event.stopPropagation();//阻止冒泡
event.preventDefault();//阻止默认行为 // 合并写法:
return false;
  • 实际开发中,一般把阻止冒泡和阻止默认行为合并起来写。

2. 事件委托

  • 定义:

  • 利用冒泡原理,将要处理相同事件的子元素的事件委托给父级,从而极大减少事件绑定的次数,提高性能。

  • 委托事件

  1. delegate():
$(function(){
$list = $('list');
$list.delegate('li', 'click', function(event) {
$(this).css({background:'red'});
});
})//给列表下面的每个li元素的事件委托给list列表。
  • 参数:第一个参数是需要委托的元素,采用css选择器的写法,默认从一级子元素开始;第二个参数时要委托的事件,可以是多个,之间用空格隔开,第三个参数是处理函数。

  • event指触发事件的那个对象。

  1. on():
$(function(){
$list = $('list');
$list.on('click', 'li', function(event) {
$(this).css({background:'red'});
});
})//给列表下面的每个li元素的事件委托给list列表。
  • 参数:

    • 第一个是需要委托的事件,多个用空格隔开;
    • 第二个是需要委托事件的子元素;
    • 第三个是触发处理函数。
  1. one():委托触发一次自动取消委托
$(function(){
$('div').one('click',"li" function(event) {
$(this).css({
"background": "blue",
});
});
});
  • 说明:参数用法和on事件一样。

  • 取消委托

  1. undelegate():
$list.undelegate();//选择器找到委托对象取消委托
  • 使用undelegate()方法取消委托,所有的子元素的委托都将被取消。
  1. off():
$list.off("click","li");

总结:

  • 每一个事件相当于一个协程,异步操作;
  • 所有的事件并列处理,事件不要嵌套事件,否则会出现重复绑定。
  • 可以进行事件委托尽量使用委托,减少系统资源消耗。
  • 作者:天宇之游
  • 出处:http://www.cnblogs.com/cwp-bg/
  • 本文版权归作者和博客园共有,欢迎转载、交流,但未经作者同意必须保留此段声明,且在文章明显位置给出原文链接。

jquery事件使用方法总结的更多相关文章

  1. jQuery事件绑定方法bind、 live、delegate和on的区别

    我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的.而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢? 1.准备知识 当我们在开始的时候,有些知识是必须具备的: 1 ...

  2. jQuery事件委托方法 bind live delegate on

    1.bind    jquery 1.3之前 定义和用法:主要用于给选择到的元素上绑定特定事件类型的监听函数 语法:  bind(type,[data],function(e)); 特点: a.适合页 ...

  3. jquery事件使用方法总结 (转)

    http://www.cnblogs.com/cwp-bg/p/7668940.html jquery提供了许多的事件处理函数,学习前端一段时间了,下面对其总结一下,梳理一下知识点. 一.鼠标事件 1 ...

  4. jQuery 事件 - one() 方法

    jQuery 事件参考手册 实例 当点击 p 元素时,增加该元素的文本大小: $("p").one("click",function(){ $(this).an ...

  5. 完美的jquery事件绑定方法on()

    在讲on()方法之前,我们先讲讲在on()方法出现前的那些事件绑定方法: .live() jQuery 1.3新增的live()方法,使用方法例如以下: $("#info_table td& ...

  6. jQuery 事件 - ready() 方法

    转载:http://www.w3school.com.cn/jquery/jquery_hide_show.asp 实例 在文档加载后激活函数: $(document).ready(function( ...

  7. jQuery 事件 - bind() 方法

    定义和用法 bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数. 实例1(一个事件) 记得把js引用地址换掉 当点击鼠标时,隐藏或显示 p 元素: <html&g ...

  8. jQuery 事件 - triggerHandler() 方法

    定义和用法 triggerHandler() 方法触发被选元素的指定事件类型.但不会执行浏览器默认动作,也不会产生事件冒泡. triggerHandler() 方法与 trigger() 方法类似.不 ...

  9. jQuery 事件 - trigger() 方法 和 triggerHandler() 方法

    trigger() 方法触发被选元素的指定事件类型. triggerHandler() 方法触发被选元素的指定事件类型.但不会执行浏览器默认动作,也不会产生事件冒泡. triggerHandler() ...

随机推荐

  1. 【1414软工助教】团队作业6——展示博客(Alpha版本) 得分榜

    题目 团队作业6--展示博客(Alpha版本) 作业提交情况情况 为所欲为 团队没有提交,其余都按时提交. 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2: ...

  2. 【Alpha】第七次Daily Scrum Meeting

    GIT 一.今日站立式会议照片        二.会议内容 1.讨论送礼物的方法和对象,使功能更加完善. 2.对于程序还存在的问题提出自己的看法,尽量让功能更加的饱满. 三.燃尽图 四.遇到的困难 能 ...

  3. 201521123001《Java程序设计》第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 答: 大多数情况下,从性能上来说ArrayList最好,但是当集合内的元素需要频繁插入.删除时Lin ...

  4. 控制结构(7) 程序计数器(PC)

    // 上一篇:最近最少使用(LRU) // 下一篇:线性化(linearization) 程序的每一行都是一个状态,对应的行指令.同步的情况下同一个pc一直自增,异步的时候,分裂出一个新的子pc,独立 ...

  5. 201521123015 《Java程序设计》第13周学习总结

    1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? IP地址不同 ...

  6. openfire:openfire单独编译指定插件的方法

    方法一: openfire默认编译时,是同时编译主程序和所有在plugins目录中的插件.但进行插件开发时,这样编译就太费时费力.使用ant plugins可以只编译插件,能够节省部分时间.最节省时间 ...

  7. java控制台输入输出

    一.比较传统的输入方法用输入流,得到字符串后要另行判断.转换 案例 import java.io.BufferedReader; import java.io.IOException; import ...

  8. 小甲鱼:Python学习笔记001_变量_分支_数据类型_运算符等基础

    1.下载并安装Python 3.5.0 Python是一个跨平台语言,Python从3.0的版本的语法很多不兼容2版本,官网找到最新的版本并下载:http://www.python.org 2.IDL ...

  9. MyeclipseJRE版本设置

    1.首先添加JDK版本 Window——Preferences——Java——Install JREs——Add——Stand VM——浏览JDK安装版本完成即可(一定是JDK中JRE的安装目录如:D ...

  10. [UWP]分享一个基于HSV色轮的调色板应用

    1. 前言 上一篇文章介绍了HSV色轮,这次分享一个基于HSV色轮的调色板应用,应用地址:ColorfulBox - Microsoft Store 2. 功能 ColorfulBox是Adobe 色 ...