jquery事件代理方法

本文介绍了如何在jQuery中使用事件代理,通过示例展示了如何为HTML列表项动态添加点击事件,从而实现高效和灵活的事件处理。

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

之前写过原生js的事件代理,最近在用jquery写项目,自然少不了事件代理,所以今天就来写下jquery的事件代理:

例如下面的例子:用事件代理的方法给每个li都添加一个点击事件,

HTML代码:

<ul>
<li>one</li>
<li>two</li>


<li>three</li>


<li>four</li>
<ul>


实现功能:当点击每个子元素时,被点击的元素就会消失;

js代码:

$('ul').on('click','li',function(e){
      console.log(e.target);
      this.remove();
})


例子2:


为了减少代码冗余,重复写这段代码,我特意尝试将封装了一个事件代理,下次若再使用类似功能的事件代理,只用调用这个函数就可以;

如下:实现鼠标放在li上时,添加背景色:

CSS样式:

 *{margin:0;padding: 0}
        .rcmd{margin:50px 100px;position: relative}
        ul{
            position: absolute;
            top:30px;
            list-style: none;
            width: 100px;
            border:1px solid #e3e3e3;
            border-radius: 10px;
        }
        li{width: 80px; margin:10px;  text-align: center;  }
        span{
            display: inline-block;
            width: 100px;
            height: 30px;
            border-radius:5px;
            background: palevioletred;
            text-align: center;
            line-height: 30px;
        }


HTML代码:

<div class="rcmd">
          <span>Recommend</span>
          <ul class="rcmd-list" style="display:none;" >
               <li><a>Recommend</a></li>
               <li><a>Online</a></li>
               <li><a>Latest</a></li>
          </ul>
 </div>

JS代码:

 function evtagent(e){
        $(e).on('mousemove','li',function(e){
               console.log(e.target.parentNode);
            $(this).css({"background":"rgb(238,238,246)"});
        });
        $(e).on('mouseout','li',function(e){
            $(this).css({"background":"white"});
        });
    }
调用函数evtagent();
给div添加一个悬浮出现下拉列表的效果,当鼠标指针移动到列表里的子元素时,会给该子元素添加背景色;

 $('.rcmd').hover(function(){
        $('.rcmd-list').show('slow','linear',function(){
            //调用事件代理
            evtagent('.rcmd-list');
          
        });
    },function(){
        $('.rcmd-list').hide('slow','linear',function(){
        });
    });

运行不成功?是不是忘记引入jquery外部文件了大笑再见。。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值