一、jQuery事件

1、鼠标事件

  • click与dbclick事件

    • click事件其实是由mousedown与mouseup 2个动作构成,所以点击的动作只有在松手后才触发
    • $ele.click():绑定$ele元素,不带任何参数一般是用来指定触发一个事件,用的比较少
    • $ele.click( handler(eventObject) ):绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数,这样可以针对事件的反馈做很多操作了,方法中的this是指向了绑定事件的元素
    • $ele.click( [eventData ], handler(eventObject) ):使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题
    • dbclick()的用法和click()的用法是类似的,可以参考以上click()的用法
    • dbclick又是由2个click叠加而来的,所以dbclick事件触发满足的条件包括:鼠标指针在元素里面时点击,鼠标指针在元素里面时释放,鼠标指针在元素里面时再次点击,点击间隔时间,是系统而定,鼠标指针在元素里面时再次释放
    • 在同一元素上同时绑定 click 和 dbclick 事件是不可取的。各个浏览器事件触发的顺序是不同的,一些浏览器在dbclick之前接受两个 click 事件 ,而一些浏览器只接受一个 click 事件。用户往往可通过不同的操作系统和浏览器配置双击灵敏度
  • mousedown与mouseup事件
    • mousedown的快捷方法可以监听用户鼠标按下的操作,与其对应的还有一个方法mouseup快捷方法可以监听用户鼠标弹起的操作,click事件其实是由mousedown于mouseup 2个动作构成,所以点击的动作只有在松手后才触发
    • mousedown事件触发需要以下几点:mousedown强调是按下触发;如果在一个元素按住了鼠标不放,并且拖动鼠标离开这个元素,并释放鼠标键,这仍然是算作mousedown事件;任何鼠标按钮被按下时都能触发mousedown事件;用event 对象的which区别按键,敲击鼠标左键which的值是1,敲击鼠标中键which的值是2,敲击鼠标右键which的值是3
    • mouseup事件触发需要以下几点:mouseup强调是松手触发,与mousedown是相反的;mouseup与mousedown组合起来就是click事件;如果用户在一个元素上按下鼠标按键,并且拖动鼠标离开这个元素,然后释放鼠标键,这仍然是算作mouseup事件;任何鼠标按钮松手时都能触发mouseup事件;用event 对象的which区别按键,敲击鼠标左键which的值是1,敲击鼠标中键which的值是2,敲击鼠标右键which的值是3
    • $ele.mousedown():绑定$ele元素,不带任何参数一般是用来指定触发一个事件,可能一般用的比较少
    • $ele.mousedown( handler(eventObject) ):绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数
    • $ele.mousedown( [eventData ], handler(eventObject) ):使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题
  • mousemove事件
    • 基于移动的机制可以做出拖动、拖拽一系列的效果出来。针对移动事件,jQuery提供了一个mousemove的快捷方法可以监听用户移动的的操作
    • mousemove事件触发需要以下几点:mousemove事件是当鼠标指针移动时触发的,即使是一个像素;如果处理器做任何重大的处理,或者如果该事件存在多个处理函数,这可能造成浏览器的严重的性能问题
    • $ele.mousemove():绑定$ele元素,不带任何参数一般是用来指定触发一个事件,用的比较少
    • $ele.mousemove( handler(eventObject) ):绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数
    • $ele.mousemove( [eventData ], handler(eventObject) ):使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题
  • mouseover与mouseout事件
    • 监听用户的移入移出操作,两者用法类似
    • $ele.mouseover():绑定$ele元素,不带任何参数一般是用来指定触发一个事件,用的比较少
    • $ele.mouseover( handler(eventObject) ):绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数
    • $ele.mouseover( [eventData ], handler(eventObject) ):使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题
  • mouseenter与mouseleave事件
    • 用户操作鼠标是否有移到元素内部或是元素外部,因此jQuery提供了一个mouseenter和mouseleave的快捷方法可以监听用户移动到内部的操作
    • 三种参数传递方式与mouseover和mouseout是一模一样的
    • mouseenter事件和mouseover的区别:关键点就是冒泡的方式处理问题,mouseenter事件只会在绑定它的元素上被调用,而不会在后代节点上被触发,mouseover则会一直冒泡到它的上级元素上
  • hover事件
    • $(selector).hover(handlerIn, handlerOut):handlerIn(eventObject)是当鼠标指针进入元素时触发执行的事件函数,handlerOut(eventObject)是当鼠标指针离开元素时触发执行的事件函数

    • 效果等于一个元素同时绑定mouseenter和mouseleave
  • focusin事件
    • 当一个元素,或者其内部任何一个元素获得焦点的时候,例如:input元素,用户在点击聚焦的时候,如果开发者需要捕获这个动作的时候,jQuery提供了一个focusin事件
    • $ele.focusin():绑定$ele元素,不带任何参数一般是用来指定触发一个事件,一般用的比较少
    • $ele.focusin( handler ):绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数
    • $ele.focusin( [eventData ], handler ):使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题
  • focusout事件
    • 当一个元素,或者其内部任何一个元素失去焦点的时候,比如input元素,用户在点击失去焦的时候,如果开发者需要捕获这个动作,jQuery提供了一个focusout事件
    • $ele.focusout():绑定$ele元素,不带任何参数一般是用来指定触发一个事件,可能一般用的比较少
    • $ele.focusout( handler ):绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数
    • $ele.focusout( [eventData ], handler ):使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题

2、表单事件

  • blur与focus事件

    • 和focusin事件与focusout事件类似,同样用于处理表单焦点的事件还有blur与focus事件
    • 它们之间的本质区别是否支持冒泡处理,focus()在元素本身产生,focusin()在元素包含的元素中产生
  • change事件
    • <input>元素,<textarea>和<select>元素的值都是可以发生改变的,开发者可以通过change事件去监听这些改变的动作
    • input元素:监听value值的变化,当有改变时,失去焦点后触发change事件。对于单选按钮和复选框,当用户用鼠标做出选择时,该事件立即触发

    • select元素:对于下拉选择框,当用户用鼠标作出选择时,该事件立即触发

    • textarea元素:多行文本输入框,当有改变时,失去焦点后触发change事件
  • select事件
    • 当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件。select事件只能用于<input>元素与<textarea>元素
    • $("input").select():手动触发事件

    • $ele.select( handler(eventObject) ):绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数
    • $ele.select( [eventData ], handler(eventObject) ):使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题
  • submit事件
    • 提交表单是一个最常见的业务需求,比如用户注册,一些信息的输入都是需要表单的提交。同样的有时候开发者需要在表单提交的时候过滤一些的数据、做一些必要的操作(例如:验证表单输入的正确性,如果错误就阻止提交,从新输入)此时可以通过submit事件,监听下提交表单的这个动作
    • $ele.submit():绑定$ele元素,不带任何参数一般是用来指定触发一个事件,用的比较少
    • $ele.submit( handler(eventObject) ):绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数
    • $ele.submit( [eventData ], handler(eventObject) ):使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题
    • 通过在<form>元素上绑定submit事件,开发者可以监听到用户的提交表单的的行为,具体能触发submit事件的行为:
      • <input type="submit">
      • <input type="image">
      • <button type="submit">
      • 当某些表单元素获取焦点时,敲击Enter(回车键)
    • form元素是有默认提交表单的行为,如果通过submit处理的话,需要禁止浏览器的这个默认行为,传统的方式是调用事件对象 e.preventDefault() 来处理, jQuery中可以直接在函数中最后结尾return false即可

3、键盘事件

  • keydown与keyup事件

    • 键盘按下与松手,针对这样的2种动作,jQuery分别提供了对应keydown与keyup方法来监听
    • keydown事件:当用户在一个元素上第一次按下键盘上字母键的时候,就会触发它。使用上非常简单,与基本事件参数处理保持一致
    • keyup事件:当用户在一个元素上第一次松手键盘上的键的时候,就会触发它。使用方法与keydown是一致的只是触发的条件是方法的

    • keydown是在键盘按下就会触发;keyup是在键盘松手就会触发;理论上它可以绑定到任何元素,但keydown/keyup事件只是发送到具有焦点的元素上,不同的浏览器中,可获得焦点的元素略有不同,但是表单元素总是能获取焦点,所以对于此事件类型表单元素是最合适的。
  • keypress事件
    • 当浏览器捕获键盘输入时,还提供了一个keypress的响应,这个跟keydown是非常相似
    • keydown事件触发在文字还没敲进文本框,这时如果在keydown事件中输出文本框中的文本,得到的是触发键盘事件前的文本,而keyup事件触发时整个键盘事件的操作已经完成,获得的是触发键盘事件后的文本
    • keypress事件与keydown和keyup的主要区别:只能捕获单个字符,不能捕获组合键;无法响应系统功能键(如delete,backspace);不区分小键盘和主键盘的数字字符
    • KeyPress主要用来接收字母、数字等ANSI字符,而 KeyDown 和 KeyUP 事件过程可以处理任何不被 KeyPress 识别的击键。诸如:功能键(F1-F12)、编辑键、定位键以及任何这些键和键盘换档键的组合等。

二、绑定事件的方式---对象.事件名字(事件处理函数)

    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function(){
//第一种写法:普通写法
$("#btn1").mouseenter(function(){
$(this).css("backgroundColor","red");
});
$("#btn1").mouseleave(function(){
$(this).css("backgroundColor","yellow");
});
$("#btn1").click(function(){
$(this).val("已经被点了!!")
});
//第二种写法:链式编程
$("#btn2").mouseenter(function(){
$(this).css("backgroundColor","red");
}).mouseleave(function(){
$(this).css("backgroundColor","yellow");
}).click(function(){
$(this).val("已经被点了!!");
});
}); </script>
<input type="button" value="显示1" id="btn1">
<input type="button" value="显示2" id="btn2">

三、绑定事件方法---对象.bind("事件名字"."事件处理函数")

    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function(){
//第一种写法:一般
$("#btn1").bind("mouseenter",function(){
$(this).css("backgroundColor","red");
});
$("#btn1").bind("mouseleave",function(){
$(this).css("backgroundColor","yellow");
});
$("#btn1").bind("click",function(){
$(this).val("已经被点击了!!!");
});
//第二种写法:链式
$("#btn2").bind("mouseenter",function(){
$(this).css("backgroundColor","red");
}).bind("mouseleave",function(){
$(this).css("backgroundColor","yellow");
}).bind("click",function(){
$(this).val("已经被点击了!!!");
});
//第三种写法:json键值对
$("#btn3").bind({
"mouseenter":function(){ $(this).css("backgroundColor","red");},
"mouseleave":function(){ $(this).css("backgroundColor","yellow");},
"click":function(){ $(this).val("已经被点击了!!!");}
});
});
</script>
<input type="button" value="显示1" id="btn1">
<input type="button" value="显示2" id="btn2">
<input type="button" value="显示3" id="btn3">

四、绑定事件方法-----父级对象.delegate("子级元素","事件名字",事件处理函数)

  • 为父级元素绑定事件,父级元素代替子级绑定事件
  • 子级元素委托父级元素绑定事件,父级元素调用方法为子级元素绑定事件
    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function(){
$("#btn").click(function(){
$("#dv").delegate("p","click",function(){
console.log("被点了!!!!");
});
});
});
</script>
<input type="button" value="绑定" id="btn">
<div id="dv" style="width: 300px;height: 300px;border: 1px solid black;">
<p style="width: 100px;height: 100px;background: #ccc;">这是一个p</p>
</div>

五、绑定事件方法----父级对象.on("事件名字","子集对象",事件处理函数)

  • 此时的on和delegate方法的作用是一样的,但是参数的顺序不一样
    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function(){
$("#btn").click(function(){
$("#dv").on("click","p",function(){
console.log("被点了!!!!");
});
});
});
</script>
<input type="button" value="绑定" id="btn">
<div id="dv" style="width: 300px;height: 300px;border: 1px solid black;">
<p style="width: 100px;height: 100px;background: #ccc;">这是一个p</p>
</div>

六、为一个元素绑定多个相同事件

    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function(){
//一般的对象.方法为一个元素绑定多个相同事件
$("#btn1").click(function(){
console.log("一般第一个事件");
});
$("#btn1").click(function(){
console.log("一般第二个事件");
});
$("#btn1").click(function(){
console.log("一般第三个事件");
});
//bind()方法为一个元素绑定多个相同事件
$("#btn2").bind("click",function(){
console.log("bind第一个事件");
}).bind("click",function(){
console.log("bind第二个事件");
});
//注意:bind采用键值对的方法绑定多个相同事件时,只执行最后一个
$("#btn3").bind({
"click":function(){console.log("键值对第一个事件");},
"click":function(){console.log("键值对第二个事件");},
"click":function(){console.log("键值对第三个事件");}
});
});
</script>
<input type="button" value="绑定1" id="btn1">
<input type="button" value="绑定2" id="btn2">
<input type="button" value="绑定3" id="btn3">

七、事件绑定四个方法区别

  • 1.对象.事件名字(事件处理函数)和对象.bind("事件名字"."事件处理函数"),
  • 这两种方式只能为存在的元素绑定事件,后面添加的元素没有事件
  • 2.父级对象.delegate("子级元素","事件名字",事件处理函数)和父级对象.on("事件名字","子集对象",事件处理函数)
  • 这两种方式可以为存在的元素绑定事件,也可以为后添加的元素绑定事件
  • 注意:源代码中delegate方法是调用on的方法,所以,以后直接使用on即可
    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function(){
//方式1:
$("#btn1").click(function(){
$("p").mouseenter(function(){
$(this).css("backgroundColor","red");
});
$("<p>这后面添加的p</p>").appendTo("#dv");
});
//方式2:
$("#btn2").click(function(){
$("p"). bind("mouseenter",function(){
$(this).css("backgroundColor","red");
});
$("<p>这后面添加的p</p>").appendTo("#dv");
});
//方式3:
$("#btn3").click(function(){
$("#dv").delegate("p","mouseenter",function(){
console.log(this);//这里的this只是指原来的p
$("p").css("backgroundColor","red");
});
$("<p>这后面添加的p</p>").appendTo("#dv");
});
//方式4:
$("#btn4").click(function(){
$("#dv").on("mouseenter","p",function(){
console.log(this);//这里的this只是指原来的p
$("p").css("backgroundColor","red");
});
$("<p>这后面添加的p</p>").appendTo("#dv");
});
});
</script>
<input type="button" value="方式一绑定" id="btn1">
<input type="button" value="方式二绑定" id="btn2">
<input type="button" value="方式三绑定" id="btn3">
<input type="button" value="方式四绑定" id="btn4">
<div id="dv" style="width: 300px;height: 300px;border: 1px solid black;">
<p style="width: 100px;height: 100px;background: #ccc;">这是一个p</p>
</div>

jQuery相关方法7----各种事件和绑定事件的更多相关文章

  1. jQuery学习-事件之绑定事件(三)

    在上一篇<jQuery学习-事件之绑定事件(二)>我们了解了jQuery的dispatch方法,今天我们来学习下handlers 方法: handlers: function( event ...

  2. jQuery学习-事件之绑定事件(二)

    在上一篇<jQuery学习-事件之绑定事件(一)>我们了解了jQuery的add方法,今天我们来学习下dispatch方法: dispatch: function( event ) {   ...

  3. WEB前端技巧之JQuery为动态添加的元素绑定事件.md

      jquery 为动态添加的元素绑定事件 如果直接写click函数的话,只能把事件绑定在已经存在的元素上,不能绑定在动态添加的元素上 可以用delegate来实现 .delegate( select ...

  4. 解决jquery新加入的元素没有绑定事件问题

    在使用jquery操作时,往往需要动态的添加一些元素,但是这些新加入的元素并没有像css那样被赋予原本定义的样式,解决方法如下: 1.动态插入元素后,并用bind事件给新加入的元素绑定事件. 2.如果 ...

  5. jQuery给动态添加的元素绑定事件的方法

    我们在开发过程会遇到无法给动态元素添加绑定事件,解决方案如下: 例如 <div id="testdiv">   <ul></ul> </d ...

  6. jQuery对 动态添加 的元素 绑定事件(on()的用法)

    从jQuery 版本 1.7 起,on() 方法是向被选元素添加事件处理程序的(官方推荐)首选方法. 当浏览器下载完一个页面的时候就开始渲染(翻译)HTML标签,然后执行css.js代码,在执行js代 ...

  7. Jquery 页面元素动态添加后绑定事件丢失方法,非 live

    代码1: 以此方法绑定的input框事件,在通过add按钮后用jquery绑定的事件 alert就会丢失 <input type="button" value="A ...

  8. jQuery 1.7以后 jQuery2 新元素绑定事件on替代live

    最近做了一个类别动态加载的功能,jQuery版本用的是2.02. 绑定事件jQuery1.7之前用的是live或者是bind.新版的jQuery新增了on方法 由于子类别是动态加载的,默认是不会有事件 ...

  9. jQuery delegate方法实现Ajax请求绑定事件不丢失

    给元素绑定click事件后 ,遇到一个问题:当执行一些ajax请求,再次调用此页面,里面的这个click事件就失效了 比如说:我的分页是一个ajax请求 但我点下一页时 后生成的元素a就没有了clic ...

随机推荐

  1. Django框架学习易错和易忘点

    一.get在几处的用法 1.获取前端数据 request.POST.get('xxx') #当存在多个值时,默认取列表最后一个元素:所以当存在多个值时,使用getlist 2.获取数据库数据 mode ...

  2. Fiddler讲解3

    想要 浏览更多Fiddler内容:请点击进入Fiddler官方文档 阅读目录: 一.Fiddler自定义请求: 二.Fiddler修改请求: 三.减少期望的延迟:100个继续标题: 四.重命名无效的P ...

  3. K-th occurrence HDU - 6704 (SA, 主席树)

    大意: 给定串$s$, $q$个询问$(l,r,k)$, 求子串$s[l,r]$的第$k$次出现位置. 本来是个简单签到题, 可惜比赛的时候还没学$SA$...... 好亏啊 相同的子串在$SA$中是 ...

  4. windows安装docker,快捷启动方式无法启动

    1.在双击“Docker Quickstart Terminal”时弹出缺少快捷方式,截图如下 2.单机快捷方式查看属性,发现配置的git位置是有问题的 现在只需要把git的正确地址配置好就可以了 现 ...

  5. Java之协程(quasar)

    一.前面我们简单的说了一下,Python中的协程原理.这里补充Java的协程实现过程.有需要可以查看python之协程. 二.Java协程,其实做Java这么久我也没有怎么听过Java协程的东西,但是 ...

  6. 《程序是怎样跑起来的》读书笔记——第一章 对程序员来说CPU是什么

    1 程序的运行流程 2 CPU的组成 3 寄存器的主要种类和功能 "程序计数器"--决定程序流程的 4 条件分支和循环机制 4.1 顺序执行 4.2 选择分支 5 函数的调用机制 ...

  7. django pk 和id用法

    pk就是primary key的缩写,也就是任何model中都有的主键,那么id呢,大部分时候也是model的主键,所以在这个时候我们可以认为pk和id是完全一样的. class Student(mo ...

  8. linux管道和重定向

    管道 管道应该是等左边的程序执行完,才使用左边的程序的输出执行右边的程序. 但是在测试的时候,如果左边的程序无限循环且不等待的输出,那么左边的程序执行时右边的程序也会执行,个人感觉这是linux的机制 ...

  9. 可能是东半球最好的 Curl 学习指南,强烈建议收藏!

    本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...

  10. Linux命令——su 、su -、sudo

    前言 大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户. 切换用户身份有两个命令 su [-] usernam ...