事件冒泡、委托

事件冒泡

什么是事件冒泡

在一个对象上触发某类事件(例:单机onclick事件),如果此对象定义了此事件的处理程序,那么就会调用这个处理程序,如果未定义,这个事件会向这个对象的父级对象传播,从里到外,直至被处理,或者达到了对象层次的最顶层,即document对象(有些浏览器是window)

事件冒泡的作用

允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子元素上)

阻止事件冒泡

事件冒泡机制有时候是不需要的,需要组织掉,通过event.stopPropagation()来阻止

$(function(){
    var $box1 = $('.father');
    var $box2 = $('.son');
    var $box3 = $('.grandson');
    $box1.click(function() {
        alert('father');
    });
    $box2.click(function() {
        alert('son');
    });
    $box3.click(function(event) {
        alert('grandson');
        event.stopPropagation();

    });
    $(document).click(function(event) {
        alert('grandfather');
    });
})

......

<div class="father">
    <div class="son">
        <div class="grandson"></div>
    </div>
</div>

阻止默认行为

阻止表单提交

$('#form1').submit(function(event){
    event.preventDefault();
})

合并阻止操作

一般把阻止冒泡和阻止默认行为合并来写,用return false

// event.stopPropagation();
// event.preventDefault();

// 合并写法:
return false;

事件委托

  • 事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。
$(function(){
    $list = $('#list');
    $list.delegate('li', 'click', function() {
        $(this).css({background:'red'});
    });
})
...
<ul id="list">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值