JQuery系列(2) - 事件处理
JQuery事件绑定
(1)on方法
on
方法是jQuery事件绑定的统一接口。后面介绍的事件绑定的那些简便方法,其实都是on
方法的简写形式。
$('li').on('click', function (e){
console.log($(this).text());
});
on
方法接受两个参数,第一个是事件名称,第二个是回调函数。
注意,在回调函数内部,this
关键字指的是发生该事件的DOM对象。为了使用jQuery提供的方法,必须将DOM对象转为jQuery对象,因此写成$(this)
。
on
方法允许一次为多个事件指定同样的回调函数。
$('input[type="text"]').on('focus blur', function (){
console.log('focus or blur');
});
on
方法还可以为当前元素的某一个子元素,添加回调函数。
$('ul').on('click', 'li', function (e){
console.log(this);
});
子元素事件冒泡触发父元素事件,关于on方法的详细介绍:http://www.365mini.com/page/jquery-on.htm
on方法还允许向回调函数传入数据。
$("ul" ).on("click", {name: "张三"}, function (event){
console.log(event.data.name);
});
当回调函数被触发后,它们的参数通常是一个事件对象event。
$(document).on('click', function (e){
// ...
});
上面代码的回调函数的参数e,就代表事件对象event。
event对象有以下属性:
- type:事件类型,比如click。
- which:触发该事件的鼠标按钮或键盘的键。
- target:事件发生的初始对象。
- data:传入事件对象的数据。
- pageX:事件发生时,鼠标位置的水平坐标(相对于页面左上角)。
- pageY:事件发生时,鼠标位置的垂直坐标(相对于页面左上角)。
event对象有以下方法:
- preventDefault:取消浏览器默认行为。
- stopPropagation:阻止事件向上层元素传播。
(2)one()方法
one方法指定一次性的回调函数,即这个函数只能运行一次。这对提交表单很有用。
$("#button").one( "click", function() { return false; } );
one方法本质上是回调函数运行一次,即解除对事件的监听。
document.getElementById("#button").addEventListener("click", handler); function handler(e) {
e.target.removeEventListener(e.type, arguments.callee);
return false;
}
(3)绑定事件的简便方法
- click
- keydown
- keypress
- keyup
- mouseover
- mouseout
- mouseenter
- mouseleave
- scroll
- focus
- blur
- resize
- hover
$('li').click(function (e){
console.log($(this).text());
});
JQuery事件触发和移除
(1)trigger()事件触发方法
trigger方法用于触发回调函数,它的参数就是事件的名称。
$('li').trigger('click')
上面代码触发li元素的click事件回调函数。与那些简便方法一样,trigger方法只触发回调函数,而不会引发浏览器的默认行为。
(2)简单版事件触发方法
$('li').click()
$('li').keydown()
下面是一个捕捉用户按下escape键的函数
$(document).keyup(function(e) {
if (e.keyCode == 27) {
$('body').toggleClass('show-nav');
// $('body').removeClass('show-nav');
}
});
(3)off方法,事件方法移除
off方法用于移除事件的回调函数。
$('li').off('click')
上面代码移除li元素所有的click事件回调函数。
参考
【1】阮一峰, http://javascript.ruanyifeng.com/jquery/basic.html#toc4
最新文章
- Python绘图
- C 符号
- bbed的使用--查看数据文件信息 &; sid信息
- 【读书笔记】iOS网络-HTTP-请求内容
- Android -- Properties使用
- 怎样删除github中的项目
- ie6下兼容问题
- 使用Linux的mail命令发送邮件
- js 每秒刷新系统时间,可停止
- UITableView的编辑(插入、删除、移动)
- Binomial Coeffcients 历届山东省省赛题
- C#基础1:Console类
- 关于Android中so解析那些事
- 论文阅读——Visual inertial odometry using coupled nonlinear optimization
- Android为TV端助力 自定义通知栏
- springboot linux启动方式
- 同时开始了SQL。。。
- ADC and DAC Analog Filters for Data Conversion
- 用一个for循环实现打印乘法口诀表
- FATAL ERROR: Could not find ./bin/my_print_defaults 解决方法
热门文章
- 【idea】全局搜索、替换只显示100条的问题
- nginx yaf需要注意的问题
- oracle python操作 增删改查
- Opencv之漫水填充效果
- 同类控件的统一操作(以TCHECKBOX为例)
- HTML文件直接在浏览器打开和本地服务器localhost打开有什么区别?
- Flink WorkCount代码
- docker build 错误 /usr/share/dotnet/sdk/2.1.801/Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3245: Could not resolve this reference
- SpringBoot开发验证码功能
- Python进阶----异常处理