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. vi/vim键盘图-

    vi/vim键盘图-----又一张桌面背景好图 也许还是有很多人不能愿意用CLI的vi/Vim来写东西,不过,当你真的习惯了,它的高效性就是不可估量了.下面的这张图,一看就明白了,从此,学习变的不再艰 ...

  2. 【1414软工助教】团队作业2——需求分析&原型设计 得分榜

    题目 团队作业2--需求分析&原型设计 作业提交情况情况 本次作业所有团队都按时提交作业. 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 ...

  3. GUI(GroupLayout 分组布局)

    组:一些组件的集合                       连续组:一个接着一个摆放                       并行组:一个组在另一个组的顶部                   ...

  4. 201521123090《JAVA程序设计》第二周学习总结

    1. 本章学习总结 java基本数据类型 String类对象使用 枚举类型及switch分支 容器的概念 2. 书面作业 Q1.使用Eclipse关联jdk源代码(截图),并查看String对象的源代 ...

  5. 201521123006 《java程序设计》 第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  6. 201521123071 《JAVA程序设计》第十四周学习总结

    第14周作业-数据库 1. 本周学习总结 1.1 以你喜欢的方式(思维导图.Onenote或其他)归纳总结多数据库相关内容. 1.使用JDBC将Java程序与数据库连接 1.1注册驱动 Class.f ...

  7. 201521123114 《Java程序设计》第13周学习总结

    1.本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu. ...

  8. SparkStreming之updateStateByKey

    正文 上一篇简单的写了一个socketTextStream的demo,这个问题就是每一次不能将之前和之后的数据进行合并统一.接下来我们通过demo进行把着这个问题解决. val conf = new ...

  9. Qt Creator编译运行成功,但是显示系统找不到指定的文件(比如urlmon.dll动态链接库)

    问题: 以前自己写的一个QT界面程序,在win 7 的32位系统上运行没有出现任何问题,但是重装系统之后,同样的程序放到win10 的64位系统下运行会出现警告:onecoreuap\inetcore ...

  10. Python扩展方法一二事

    前言 跟着一个有强迫症的老板干活是一件极其幸福的事情(你懂的).最近碰到一个问题,简单的说就是对一个对象做出部分修改后仍然返回此对象,于是我就写了一个方法,老板看了之后只有一句话:不雅观,改成直接对此 ...