Jquery学习笔记——自定义事件

作用:

为了在模块之间解耦合(地球人都知道!)

基本结构

被触发端: obj.bind('自定义事件名称','传入的数据',处理函数)
触发端: 触发对象.click( function(event) {
    找到被触发端对象.trigger(‘自定义事件名称’,'传递的数据')
如:

$(document).bind('myCustomEvent', { foo : 'bar' }, function(e, arg1, arg2) {
	console.log(e.data.foo); // 'bar'
	console.log(arg1); // 'bim'
	console.log(arg2); // 'baz'
});

$(document).trigger('myCustomEvent', [ 'bim', 'baz' ]);

});


         一个简单实例: 有两间屋子,每个屋子有各自的插座和灯泡,还有一个统一的开关。要求如下:每个房子内的插座和开关能关闭自己屋内的灯泡,master_switch能进行灯泡的统一打开和关闭。

<div class="room" id="kitchen">
    <div class="lightbulb on"></div>
    <div class="switch"></div>
    <div class="switch"></div>
    <div class="clapper"></div>
</div>
<div class="room" id="bedroom">
    <div class="lightbulb on"></div>
    <div class="switch"></div>
    <div class="switch"></div>
    <div class="clapper"></div>
</div>
<div id="master_switch"></div>


 

$('.lightbulb').bind('changeState', function(e) {
	var $light = $(this);
	if ($light.hasClass('on')) {
		$light.trigger('turnOff');
	} else {
		$light.trigger('turnOn');
	}
}).bind('turnOn', function(e) {
	$(this).removeClass('off').addClass('on');
}).bind('turnOff', function(e) {
	$(this).removeClass('off').addClass('on');
});

$('.switch, .clapper').click(function() {
	$(this).parent().find('.lightbulb').trigger('changeState');
});

$('#master_switch').click(function() {
	if ($('.lightbulb.on').length) {
		$('.lightbulb').trigger('turnOff');
	} else {
		$('.lightbulb').trigger('turnOn');
	}
});


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值