用交互操作中,最简单直接的操作就是点击操作。jQuery提供了两个方法一个是click方法用于监听用户单击操作,另一个方法是dbclick方法用于监听用户双击操作。这两个方法的用法是类似的,下面以click()事件为例
使用上非常简单:
方法一:$ele.click()
绑定$ele元素,不带任何参数一般是用来指定触发一个事件,用的比较少
<div id="test">点击触发<div>
$("ele").click(function(){
alert('触发指定事件')
})
$("#test").click(function(){
$("ele").click() //手动指定触发事件
});
方法二:$ele.click( handler(eventObject) )
绑定$ele元素,每次$ele元素触发点击操作会执行回调 handler函数,这样可以针对事件的反馈做很多操作了,方法中的this是指向了绑定事件的元素
<div id="test">点击触发<div> $("#test").click(function() { //this指向 div元素 });
方法三:$ele.click( [eventData ], handler(eventObject) )
使用与方法二一致,不过可以接受一个数据参数,这样的处理是为了解决不同作用域下数据传递的问题
<div id="test">点击触发<div> $("#test").click(11111,function(e) { //this指向 div元素 //e.data => 11111 传递数据 });
dbclick()的用法和click()的用法是类似的,可以参考以上click()的用法。
dbclick与click事件不同的是:
click事件触发需要以下几点:
PS:mousedown和mouseup下一节会讲到
dbclick事件触发需要以下几点:
dbclick又是由2个click叠加而来的,所以dbclick事件只有在满足以下条件的情况下才能被触发
注意:在同一元素上同时绑定 click 和 dbclick 事件是不可取的。各个浏览器事件触发的顺序是不同的,一些浏览器在dbclick之前接受两个 click 事件 ,而一些浏览器只接受一个 click 事件。用户往往可通过不同的操作系统和浏览器配置双击灵敏度
在右边代码28行处,填入任务代码
给页面第一个button元素绑定一个点击事件
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> .test2 { background: #bbffaa; } .test3 { background: yellow; } .test2,.test3{ border: 1px solid red; } </style> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>.click()方法</h2> <h4>测试一</h4> <button>元素绑定事件,弹出回调中的this</button> <script type="text/javascript"> //this指向button元素 $("button:eq(0)").?(function() { alert(this) }) </script> <h4>测试二</h4> <div class="test2"> <p>$('button:first').click(function(e) {alert(this)})</p> </div> <button>指定触发事件</button> <script type="text/javascript"> $('p').click(function(e) { alert(e.target.textContent) }) //this指向button元素 $("button:eq(1)").click(function() { $('p').click() //指定触发绑定的事件 }) </script> <h4>测试三</h4> <div class="test3"> <p>$('.right').click(1111, set)</p> </div> <button>不同函数传递数据</button> <script type="text/javascript"> //不同函数传递数据 function data(e) { alert(e.data) //1111 } function a() { $("button:eq(2)").click(1111, data) } a(); </script> </body> </html>