JQuery 基础 jQuery事件模型一

本文介绍jQuery中的事件处理机制,包括事件绑定、事件委托、事件取消等核心概念,并提供丰富的示例代码,帮助读者掌握jQuery事件处理的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jQuery 事件模型


- 提供了统一的事件处理方法(没有兼容性烦恼)

- 允许添加多个事件处理函数(采用 DOM 2级事件处理方式)

- 使用标准的事件名称(不带on)

- 事件实例做为事件处理函数的第一个参数

- 标准化事件实例最常用的属性

- 提供了统一的事件取消和阻止行为的标准



添加事件处理

- on(eventType[,selector][,data],handler)

eventType: 事件名称(可以是一个,也可以多个,用空格)

selector: 选择器(事件委托时会需要使用)

data: 传递一些数据给数据处理函数,可以在事件处理函数中,事件实例 event 的data 属性中获得

handler: 事件需要触发的事件处理函数

示例:

<script type="text/javascript">
	$(function(){
		$('p').on('click',null,null,function(event){
			console.log('p.click');
		});

		$('p').on('click',function(event){
			console.log('p.click');
		}).on('click',function(event){
			console.log('p.click2');
		});

		$('div').on('click','#p1-1',function(event){
			console.log('div.p1-1')
		});

		$('div').on('click','#p1-1-1',{foo:'bar'},function(event){
			console.log('data is %o',event.data);
		});

		$('div').on('mouseover','#p1-1-1',{foo:'bar'},function(event){
			console.log('data is %o',event.data);
		});

	});
</script>

事件委托:

 将事件绑定在父元素上,然后使用event.target 来判断其子元素。(可以提升程序的性能、降低复杂度)

<script type="text/javascript">
	$(function(){
		// 第一种方式
		// $('li').on('click',function(event){
		// 	console.log('%o li clicked',$(this));
		// });

		// 第二种方式
		$('ul').on('click',function(event){
			console.log('%o clicked',$(event.target));
			// if(event.target)
		});
	});
</script>



统一方法和属性

 - 阻止冒泡:stopPropagation()

 - 阻止默认行为:preventDefault()

 - 阻止冒泡和默认行为: return false

<script type="text/javascript">
	$(function(){
		$('p').on('click',function(event){
			event.stopPropagation();
			console.log('%o clicked',$(this));
		});
	});
</script>


JQuery 所有支持的事件

 - blur

 - change

 - click

 - dblclick

 - error

 - focus

 - focusin

 - focusout

 - keydown

 - keypress

 - keyup

 - load

 - unload

 - mousedown

 - mouseenter

 - mouse leave

 - mousemove

 - mouseout

 - mouseover

 - mouseup

 - ready

 - resize

 - scroll

 - select

 - submit 



一次性的事件处理

只会执行一次,此后将不再执行

- one(eventType[,selector][,data],handler)




移除事件(移除该dom 的所有事件)

 - off(eventType[,selector][,handler])

示例1:

<script type="text/javascript">
	$(function(){
		$('p').off('click');
	})
</script>

示例2:

<script type="text/javascript">
	// $(function(){
	// 	$('p').off('click');
	// })

	var click2 = function(){
		console.log('click2');
	};

	$('p').on('click',function(){
		console.log('click1');
	}).on('click',click2);
    
    // 只删除一个指定事件 
	$('p').off('click',click2);
</script>

示例3:

<script type="text/javascript">
	$('p').on('click',function(){
		console.log('click1');
	}).on('mouseover',function(){
		console.log('mouseover')
	});

	// 删除所有事件
	// $('p').off()

	// 删除多个事件
	$('p').off('click mouseover');
</script>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值