jQuery 事件委托(上级节点——下级节点)

<ul id="wrap">
    <li>item1</li>
    <li>item2</li>
    <li>item3</li>
    <li>item4</li>
    <li>item5</li>
</ul>
$(function(){

    // 普通事件
    $('li').click(function(){
        $(this).css('background', '#D4DFE6');
    });


    // 动态添加DOM节点
    $('#addBtn').click(function(){
        $('#wrap').append( $('<li>item'+ ($('li').length + 1) +'</li>') );
    });

    /**
     * 事件委托
     */

    // jQuery 1.9已废弃
    /*$('li').live('click', function(){
        $(this).css('background', '#D4DFE6');
    });*/

    // jQuery的delegate写法
    $('#wrap').delegate('li', 'click', function(ev){

        // this 指向委托的对象 li
        $(this).css('background', '#D4DFE6');

        // 找到父级 ul#wrap
        $(ev.delegateTarget).css('border', '2px solid #f00');
    });

    // jQuery的on的写法
    $('#wrap').on('click', 'li', function(ev) {
        // this 指向委托的对象 li
        $(this).css('background', '#D4DFE6');

        // 找到父级 ul#wrap
        $(ev.delegateTarget).css('border', '2px solid #f00');
    })


    // js原生写法
    var _wrap = document.getElementById('wrap');
    _wrap.addEventListener('click', function(ev){
        var ev = ev || event;
        if( ev.target.nodeName == 'LI' ) {
            ev.target.style.background = '#8EC0E4';
            console.log( ev.target.innerHTML );
        }

        // 找到父级 ul#wrap
        this.style.border = '2px solid #f00';
    });

});

 

转载于:https://www.cnblogs.com/shuaitong/p/9d87a60cb488a787604eb4b0469a5ba9.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值